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实现高位进位加法的步骤以及代码实现过程,由此可以较容易地实现大数加法运算。