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;
}


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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 公有云和私有云的区别有哪些

    公有云和私有云的区别有哪些近年来,云服务已经走进千百家企业,成为公司业务不可分割的一部分。作为公司管理层,我们需要使用云服务,需要对企业所使用的云服务产品做出选择,但大多数人不是科班出现,很多时候,概念都理解不了,更别提决策了。公有云、私有云、混合云,这几个概念,在企业使用云服务时,最为常见,下面我们就一起来理解一下它们,知道它们有什么区别,方便日后根据企业的实际运营状况,选择合适的云服务。公有云云计算提出的愿景,是想让企业像使用水电那样,使用IT服务。国家建立水厂、发电厂,集中提供水电,企业不再需要挖水..

    2022年6月29日
    30
  • 0-1背包问题回溯法C++代码

    0-1背包问题回溯法C++代码 /*给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?*/#includeusingnamespacestd;#defineMAXSIZE100#defineTRUE1#defineFALSE0#defineERROR-1typedeffloatvalu

    2022年10月20日
    3
  • xamarin android listview的用法

    xamarin android listview的用法listview也许是用的非常频繁的一个控件之一,下面我写一个xamarin的listview栗子,大家尝一尝xamarinandroid开发的乐趣。原谅我的大小写吧.listview绑定自定义的BaseAdapter先来看一下最终实现的效果图:News.cs和NewAdapter.csnamespaceDrawerLayout.Adapter{public…

    2022年7月22日
    12
  • HDU 3699 A hard Aoshu Problem (暴力搜索)[通俗易懂]

    HDU 3699 A hard Aoshu Problem (暴力搜索)

    2022年1月21日
    157
  • MySQL相关问题整理

    MySQL相关问题整理备注:针对基本问题做一些基本的总结,不是详细解答!1.事务的基本要素2.事务隔离级别(必考)3.如何解决事务的并发问题(脏读,幻读)(必考)4.MVCC多版本并发控制(必考)5.为什么选择B+树作为索引结构(必考)6.索引B+树的叶子节点都可以存哪些东西(必考)7.查询在什么时候不走(预期中的)索引(必考)8.sql如何优化9.explain是如何解析sql的…

    2022年4月26日
    41
  • 走进webpack(2)–第三方框架(类库)的引入及抽离

    正文之前,由于这是一个系列的文章,可能第一次看到的看官老爷们会觉得突兀,如果你是webpack新手,我建议你先从前几篇文章看起,如果你对webpack有一些了解,也希望可以在github上下载代码,对

    2022年3月25日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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