在 JavaScript 中,所有整数字变量默认都是有符号整数,这意味着什么呢?

有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号,0 表示正数,1 表示负数。
数值范围从 -2^31 - 2^31-1 即 -2147483648 到 2147483647。

JavaScript 进行位操作时,是采用32位 有符号 整型,这意味着其转换的结果也是32位有符号整型。 有些时候,我们进行移位会出现意想不到的结果,以下是C语言JS 的对比。

C语言

1 unsigned int a = 3774191835u;
2 unsigned int b = a >> 2;
3 /* b == 943547958 */

JavaScript

1 var a = 3774191835;
2 var b = a >> 2;
3 /* b == -130193866 */

可以看到,JavaScript 进行位运算时,是采用的有符号整型,故我们得到了不一样的结果。 怎么解决呢?

我们可以把JavaScript 中的有符号数,转换成无符号数。只需要进行 >>>0 移位操作就好了。

最好不要使用 >> ,推荐使用 >>> 因为最左边一位会被解析成符号位,当数字溢出时,会被解析成负数

转载于:https://www.cnblogs.com/owenyang/p/3462245.html

JavaScript 32位整型无符号操作相关推荐

  1. c语言整形符号位_C语言中整型无符号二进制数的表示问题

    龙源期刊网 http://www.qikan.com.cn C 语言中整型无符号二进制数的表示问题 作者:马红旭 来源:<电子技术与软件工程> 2015 年第 20 期 摘 要 文章解决的 ...

  2. JS处理32位整型位运算

    JS处理32位整型位运算 32位整数运算 首先要清楚,在JS中无论是整数还是小数都是按照64位的浮点数形式存储,而整数运算会自动转化为32位有符号整数. 有符号整数使用 31 位表示整数的数值,用第 ...

  3. IEEE754:将单精度浮点数的IEEE754格式转换成32位整型

    ieee754,要求如下, 定义函数 int my_int_float() 从键盘输入一个单精度浮点数的字符串,然后自己解析该字符串,并用位操作把对应的值按754格式保存到4字节里,最后返回该四字节对 ...

  4. 【JavaScript】JS处理32位整型位运算

    由上一篇leetcode题目(反转整数)中所涉及到的js整型范围,针对js如何处理32位整数运算原理以作扩展: 1.32位整数运算 首先要清楚,在JS中无论是整数还是小数都是按照64位的浮点数形式存储 ...

  5. mysql整型无符号 大小_解决mysql无符号整型自减运算时溢出的问题

    溢出通常是指的数字类型的一个溢出问题了,对于这个问题小编整理了一篇关于解决mysql无符号整型自减运算时溢出的问题的教程,希望对各位同学会有所帮助. 在mysql中给一个无符号整型字段做自减运算时,如 ...

  6. 关于C++中有符号整型和无符号整型的转换方法

    首先举个c++代码,如下: #include <iostream> using namespace std;/* * 这个程序演示了有符号整数和无符号整数之间的差别 */ int main ...

  7. MongoDB中关于64位整型存储解决方案

    为什么80%的码农都做不了架构师?>>>    社区内一哥们@smcboy 提出关于php中操作MongoDB存储整数问题,找到点资料花点时间翻译过来,是个很好的学习方式.@红薯 那 ...

  8. 【转】C/C++的64位整型 不同编译器间的比较

    /为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数   //结果VC中还是认为是32位的,显然不合适   //typedef signed long int ...

  9. C/C++的64位整型 zz

    //为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数 //结果VC中还是认为是32位的,显然不合适 //typedef signed long int TS ...

最新文章

  1. pandas使用set_table_attributes函数、display_html函数等在jupyter notebook中并排显示两个dataframe的内容(side by side)
  2. Kickstart的配置文件anaconda-ks.cfg解析
  3. 聊聊scalecube-cluster的GossipProtocol
  4. 团队冲刺(二)个人工作总结9
  5. Innodb存储引擎的特性(1).
  6. rust矿洞绳子怎么爬下_为何一根绳子可以凭空升到天上?印度通天绳究竟是什么原理?...
  7. 阿里云开源EasyTransfer:业界首个面向NLP场景深度迁移学习框架
  8. Portal-Basic Java Web 应用开发框架:应用篇(十一) —— 整合 Spring
  9. Weblogic Session复制策略与方式
  10. MFC小笔记:TabCtrl父子窗口传递消息
  11. FAR,NEAR区别
  12. linux下如何添加一个用户并且让用户获得root权限
  13. 锁屏界面提示某些设置已隐藏_OPPO忘记锁屏密码怎么办?教你一招轻松解开!...
  14. eclipse java 报错信息_解决Eclipse启动时报Initializing Java Tooling异常信息
  15. vscode生成vue模板快捷键_VSCode 初次写vue项目并一键生成.vue模版
  16. 频率单位Hz、MHz、GHz、THz、PHz、EHz换算关系
  17. Speed Gear(变速精灵XP) V6.0 - 免费版,破解版,绿色版
  18. 【翻译】steam离线时通过局域网游玩L4D2(求生之路2)
  19. 学术论文的英文文献,国内外有哪些网站可以找得到?
  20. Python小数整数输出

热门文章

  1. ArcEngine中画点画线画面
  2. Exchange server 2013 安装部署初体验
  3. ubuntu11.04服务器安装
  4. 科技管理的第一个作业
  5. where is lingang city in shanghai?
  6. 《人潮汹涌》的观后感
  7. 注意区分啊~这里求的的事公共子串不是子序列。NOJ308-Substring
  8. 把一个项目放到GItHub上
  9. 牛客小白月赛5 E 面积 计算三角形面积模板 波尔约-格维也纳定理 匹克公式
  10. 一个虐你千百遍的问题:“RPC好,还是RESTful好?”