JavaScript 32位整型无符号操作示例


Posted in Javascript onDecember 08, 2013

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

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

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

C语言

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

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

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

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

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

Javascript 相关文章推荐
JavaScript 浏览器验证代码(来自discuz)
Jul 17 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
Feb 16 Javascript
JQuery的$和其它JS发生冲突的快速解决方法
Jan 24 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
Feb 23 Javascript
分享一款基于jQuery的视频播放插件
Oct 09 Javascript
JavaScript兼容性总结之获取非行间样式案例
Aug 07 Javascript
Bootstrap整体框架之JavaScript插件架构
Dec 15 Javascript
vue 自定义右键样式的实例代码
Nov 06 Javascript
js实现AI五子棋人机大战
May 28 Javascript
js 获取本周、上周、本月、上月、本季度、上季度的开始结束日期
Feb 01 Javascript
Vue登录拦截 登录后继续跳转指定页面的操作
Aug 04 Javascript
JavaScript逻辑运算符相关总结
Sep 04 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 #Javascript
js快速排序的实现代码
Dec 08 #Javascript
Javascript中匿名函数的多种调用方式总结
Dec 06 #Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
Dec 06 #Javascript
JavaScript作用域与作用域链深入解析
Dec 06 #Javascript
深入解析JavaScript中的变量作用域
Dec 06 #Javascript
关于Javascript作用域链的八点总结
Dec 06 #Javascript
You might like
sourcesafe管理phpproj文件的补充说明(downmoon)
2009/04/11 PHP
CI框架开发新浪微博登录接口源码完整版
2014/05/28 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
Zend Framework教程之Zend_Registry对象用法分析
2016/03/22 PHP
javascript 有用的脚本函数
2009/05/07 Javascript
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
鼠标右击事件代码(asp.net后台)
2011/01/27 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
调用DOM对象的focus使文本框获得焦点
2014/02/19 Javascript
JS控制输入框内字符串长度
2014/05/21 Javascript
删除javascript所创建子节点的方法
2015/05/21 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
Vue.Js中的$watch()方法总结
2017/03/23 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
web3.js增加eth.getRawTransactionByHash(txhash)方法步骤
2018/03/15 Javascript
vue中实现左右联动的效果
2018/06/22 Javascript
使用preload预加载页面资源时注意事项
2020/02/03 Javascript
Vue 的双向绑定原理与用法揭秘
2020/05/06 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
微信小程序实现选项卡滑动切换
2020/10/22 Javascript
[02:36]DOTA2亚洲邀请赛小组赛精彩集锦:EE凭借法力虚空拿下4杀
2017/03/30 DOTA
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python 循环数据赋值实例
2019/12/02 Python
使用pyinstaller逆向.pyc文件
2019/12/20 Python
基于pytorch 预训练的词向量用法详解
2020/01/06 Python
python通过移动端访问查看电脑界面
2020/01/06 Python
关于box-sizing的全面理解
2016/07/28 HTML / CSS
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
小溪流的歌教学反思
2014/02/13 职场文书
环境整治工作方案
2014/05/18 职场文书
医院营销工作计划
2015/01/16 职场文书
先进个人总结范文
2015/02/15 职场文书
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫
JavaScript架构localStorage特殊场景下二次封装操作
2022/06/21 Javascript