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

JS大数运算_大数阶乘运算/***大数与或操作*/global.andorOpera=function(a,b,type){//type=1是与运算,type=2是或运算,默认是与运算a=a+””;b=b+””;varaStr=toBin(a);varbStr=toBi

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

/** * 大数与或操作 */
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;
}


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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Latex常见符号对照表

    摘要:Latex可以很方便的利用命令来生成各式各样的特殊符号.这里根据官方的文档将这些常见符号列出,以备查用.

  • softmax损失函数

    softmax损失函数cnn进行前向传播阶段,依次调用每个Layer的Forward函数,得到逐层的输出,最后一层与目标函数比较得到损失函数,计算误差更新值,通过反向传播逐层到达第一层,所有权值在反向传播结束时一起更新。losslayer是CNN的终点,接受两个Blob作为输入,其中一个是CNN的预测值,另一个是真实标签。损失层则将这两个输入进行一系列运算,得到当前网络的损失函数(LossFunction),

  • Qemu之Network Device全虚拟方案二:虚拟网卡的创建

    Qemu之Network Device全虚拟方案二:虚拟网卡的创建

  • permission denied怎么办_configure python interpreter

    permission denied怎么办_configure python interpreter运行代码时,出现诸如这样的文件的权限有可能出问题,不过更多是路径本身有问题。

  • 为什么很少_OpenGL合并drawcall

    为什么很少_OpenGL合并drawcallhttps://www.zhihu.com/question/27933010

  • matlab物理碰撞建模_opencascade 碰撞检测

    matlab物理碰撞建模_opencascade 碰撞检测碰撞检测Note本节暂未进行完全的重写,错误可能会很多。如果可能的话,请对照原文进行阅读。如果有报告本节的错误,将会延迟至重写之后进行处理。当试图判断两个物体之间是否有碰撞发生时,我们通常不使用物体本身的数据,因为这些物体常常会很复杂,这将导致碰撞检测变得很复杂。正因这一点,使用重叠在物体上的更简单的外形(通常有较简单明确的数学定义)来进行碰撞检测成为常用的方法。我们基于这些简单的外形来检测碰撞,…

    2022年10月27日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号