首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JS大数运算_大数阶乘运算

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

作者头像
全栈程序员站长
发布于 2022-11-08 15:02:13
发布于 2022-11-08 15:02:13
1.7K00
代码可运行
举报
运行总次数:0
代码可运行

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/** * 大数与或操作 */
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【算法】位运算合集
三三是该溜子
2024/12/30
1070
【算法】位运算合集
JS面试中常见的算法题
js除了基础知识以外,算法也是挺重要的。因此特意整理了一些常见的算法题,希望大家有帮助。
前端迷
2019/10/14
1.2K0
Kotlin学习之路(2)数据类型
每一种语言都有自己的基本数据类型,Kotlin也有自己的数据类型,类似与Java包括整型 浮点型 布尔类型等。
全栈程序员站长
2021/04/07
8450
这些js手写题你能回答上来几道
可以给img标签统一自定义属性data-src='default.png',当检测到图片出现在窗口之后再补充src属性,此时才会进行图片资源加载。
helloworld1024
2022/09/26
6520
JavaScript 手写题(二)
2、将新对象的原型 _proto_ 指向构造函数的原型 prototype (改变 this 指向)
用户8087287
2022/10/31
1730
QT计算器 之 大数运算「建议收藏」
1、简介: 计算器是我们生活中很常见的东西,它可以由多种语言多种方式来实现,今天我想讲的是基于C++语言,由QT实现的可以计算大数的简单计算器。
全栈程序员站长
2022/11/10
4110
面试官:这些js手写题你会吗
AJAX是 Asynchronous JavaScript and XML 的缩写,指的是通过 JavaScript 的 异步通信,从服务器获取 XML 文档从中提取数据,再更新当前网页的对应部分,而不用刷新整个网页。
helloworld1024
2022/09/25
4380
「面试」45 道牛客网 JavaScript 经典题总结(8500字)
牛客网的45道JS能力评测题个人觉得是非常好的45道js基础检测题,基本就是对自己的JavaScript基础做一个比较全面的评估,包括if语句、循环体、基础操作符、setInterval、setTimeout、流程控制、常用数组方法及es6相关(解构、Map、Set、...等)。之前我已经做过一遍了,我记得以前牛客网不支持es6的写法,这两天花了点时间把所有题目又做了一遍,发现支持es6了。这次每个题目我都尽力用了不同的方法实现,建议各位看官收藏,需要的时候方便查看。当然如果你有更好更新颖的实现方法,欢迎评论区留言交流。
coder_koala
2020/07/15
1.2K0
「面试」45 道牛客网 JavaScript 经典题总结(8500字)
JavaScript刷LeetCode拿offer-经典高频40题
工作太忙没有时间刷算法题,面试的时候好心虚。这里双手奉上40道LeetCode上经典面试算法题,整理的内容有点长,建议先收藏,慢慢消化,在来年顺利拿到满意的offer。
hellocoder2028
2022/10/31
4750
web前端开发面试中常见的算法题(JS)
最近在准备秋招,做过了大大小小的公司的面试题,发现除了基础知识外,算法还是挺重要的。特意整理了一些常见的算法题,添加了自己的理解并实现。
全栈程序员站长
2022/09/07
6740
我在近期求职中遇到的前端面试问题及其解法
在今天的文章中,我想跟大家聊聊自己最近在 COVID-19 疫情下的求职经历中遇到的问题。另外,我还把自己的准备工作整理成一份资源清单供大家参考。
深度学习与Python
2020/09/14
1K0
20道高频前端手写题(有答案)
类的继承在几年前是重点内容,有n种继承方式各有优劣,es6普及后越来越不重要,那么多种写法有点『回字有四样写法』的意思,如果还想深入理解的去看红宝书即可,我们目前只实现一种最理想的继承方式。
ccAllen23
2022/07/29
8190
美团前端手写面试题总结
该方法的参数是 Promise 实例数组, 然后其 then 注册的回调方法是数组中的某一个 Promise 的状态变为 fulfilled 的时候就执行. 因为 Promise 的状态只能改变一次, 那么我们只需要把 Promise.race 中产生的 Promise 对象的 resolve 方法, 注入到数组中的每一个 Promise 实例中的回调函数中即可.
helloworld1024
2022/10/18
9940
前端算法题目解析
前几天逛 github 的时候看到一些前端的算法题,自己做了一遍发现还挺有意思的,因此整理了一下收录 daily-question 的 algorithm 文件夹中,后续会继续增加,本文分享我整理的十个算法题目。
小皮咖
2020/01/03
6620
大数运算(7)——大数阶乘(求阶乘)
对于大数来说,一个数的阶乘是非常大的,同样,一个int类型的整数,他的阶乘就有可能会很大。
全栈程序员站长
2022/11/08
1.5K0
前端一面必会手写面试题指南
instanceof 运算符用于判断构造函数的 prototype 属性是否出现在对象的原型链中的任何位置。
helloworld1024
2022/11/09
7330
剑指Offer全解
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
racaljk
2019/03/29
9750
JS_算法题_01
解决方法 arrayObject.splice(index,howmany,item1,…,itemX):
Java架构师必看
2021/03/22
6150
两个大数相加的三种实现方法
方法一: import java.math.BigDecimal; /** * 两个大数相加 * * @author * @version $Id: BigNumberAdd.java, v 0.1 2014年8月18日 下午2:13:20 */ public class BigNumberAdd1 { public static void main(String[] args) { String num1 = "34646313135
程序新视界
2022/11/30
7530
前端常见算法的JS实现
排序算法 1、冒泡排序 function bubbleSort(arr){ var i = 0, j = 0; for(i=1; i<arr.length; i++){ for(j=0; j<=arr.length-i; j++){ var temp = 0; // ">" 从小到大排序 // "<" 从大到小排序 if(arr[j] > arr[j+1]){ temp = arr[j]; arr[j
前端迷
2018/10/29
7580
相关推荐
【算法】位运算合集
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档