前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS大数运算_大数阶乘运算

JS大数运算_大数阶乘运算

作者头像
全栈程序员站长
发布2022-11-08 23:02:13
1.5K0
发布2022-11-08 23:02:13
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

代码语言:javascript
复制
/** * 大数与或操作 */
global.andorOpera = function (a, b, type) {
//type = 1是与运算,type = 2 是或运算,默认是与运算
a          = a + "";
b          = b + "";
var aStr   = toBin(a);
var bStr   = toBin(b);
var longer = aStr.length > bStr.length ? aStr : bStr;
var sorter = aStr.length > bStr.length ? bStr : aStr;
var _tstr  = "",
_fix   = longer.length - sorter.length;
for (var i = longer.length - 1; i >= 0; i--) {
if (type == 2) {
//或运算
_tstr += longer[i] == 1 || sorter[i - _fix] == 1 ? 1 : 0;
} else {
//与运算
_tstr += longer[i] == 1 && sorter[i - _fix] == 1 ? 1 : 0;
}
}
// return parseInt(_tstr.split("").reverse().join(""),2);
return tobigInt(_tstr.split("").reverse().join(""));
}
//大数转二进制
function toBin(str) {
var arr = [];
var remainder, i, str2, num, char;
while (str.length > 0) {
str2      = "";
remainder = 0;
for (i = 0; i < str.length; i++) { // str2 = str组成的十进制数 / 2
num  = str.charCodeAt(i) - 0x30; // num to String
num  = remainder * 10 + num;
char = Math.floor(num / 2).toString();
// 忽略最高为的0 , 即最高为如果是 0 则不放入 str2
if (!(char === "0" && str2 === "")) {
str2 += char;
}
remainder = num % 2;
}
str = str2;
arr.push(remainder); // 保存余数
}
return arr.reverse().join('');
}
//二进制转大数 BigNumber = require('big-number');
function tobigInt(str) {
str        = str.split("");
var length = str.length;
var temp   = "0";
for (var i = length - 1; i >= 0; i--) {
temp = BigNumber(temp).add(str[i] == "1" ? (BigNumber("2").pow(length - 1 - i).number.reverse().join("")) : 0).number.reverse().join("");
}
return temp;
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184946.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月7日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档