Redis实现的高位进位加法图解(redis高位进位加法图)

Redis是一种开源的高级快速数据库,支持实时高位进位加法。高位进位加法的优点在于它可以有效的进行大数的加法运算。Redis实现高位进位加法的具体步骤如下图所示:

![图片1.png](https://upload-images.jianshu.io/upload_images/7476555-eed836d719cccf6b.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

从上图可以看出,Redis实现高位进位加法的具体运算步骤如下:

1、从十进制数的最低位开始,以第一个数为准,依次进行每一位数的加法运算。

2、如果位数的结果大于等于10,则进位,结果减去 10,向前一位进一位,当前结果为下一位结果。

3、依次运算到最高位数,最终结果即为高位进位加法的结果。

用Redis实现高位进位加法的代码实现如下:

“`javascript

var redis = require(“redis”)

var client = redis.createClient()

client.on(“connect”, () => {

console.log(‘Redis服务正在运行’)

})

// 实现数组求和函数

let arrSum = (arr) => {

return arr.reduce((a, b) => parseInt(a, 10) + parseInt(b, 10))

}

// 定义高位进位加法函数

let plusBit = (arr) => {

let num = arr.reverse() // 重置数组顺序

let result = [] // 初始化结果数组

let overflow

// 依次计算每一位的结果

num.forEach(function (item, index) {

let a = index ? result[index – 1] : 0 // 取上一位结果

let _res = arrSum([a, overflow, item]) // 计算当前位数

let b = _res.toString().length == 1 ? 0 : _res.toString().slice(0, -1) // 高位

result[index] = _res.toString().slice(-1) // 低位

overflow = b

})

// 求和如果有进位则在最高位补1

result = overflow ? [overflow].concat(result) : result

return result

}

// 将字符以指定位数切割

let sliceStr = (str, c) => {

let l = Math.ceil(str.length / c)

let arr = []

let start = 0

for (let i = 0; i

arr.push(str.slice(start, start + c))

start += c

}

return arr

}

let fn = {

// 字符串高位进位加法

adds: (str) => {

// 将字符串以指定位数切割

let arr = sliceStr(str, 1)

// 进行加法操作

let res = plusBit(arr).reverse()

// 输出结果

client.set(“result”,res.join(“”), () => {

console.log(res.join(“”))

client.quit()

})

}

}

// 调用函数

fn.adds(“12345678”)


通过以上代码,可以看出Redis实现高位进位加法的步骤以及代码实现过程,由此可以较容易地实现大数加法运算。

数据运维技术 » Redis实现的高位进位加法图解(redis高位进位加法图)