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 相关文章推荐
几个高效,简洁的字符处理函数
Apr 12 Javascript
document.createElement()用法
Mar 13 Javascript
JS清除IE浏览器缓存的方法
Jul 26 Javascript
css结合js制作下拉菜单示例代码
Feb 27 Javascript
jQuery中:only-child选择器用法实例
Jan 03 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
Sep 14 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
Jul 12 Javascript
JavaScript中的return布尔值的用法和原理解析
Aug 14 Javascript
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
Django+Vue跨域环境配置详解
Jul 06 Javascript
Openlayers实现地图全屏显示
Sep 28 Javascript
JS实现纸牌发牌动画
Jan 19 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
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
学习ExtJS Window常用方法
2009/10/07 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
jQuery中get和post方法传值测试及注意事项
2014/08/08 Javascript
js中window.open打开一个新的页面
2014/08/10 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
Vue中"This dependency was not found"问题的解决方法
2018/06/19 Javascript
Angular刷新当前页面的实现方法
2018/11/21 Javascript
Webpack 4如何动态切割JS注入文件名详解
2019/07/09 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
[03:21]【TI9纪实】Old Boys
2019/08/23 DOTA
Python的另外几种语言实现
2015/01/29 Python
Python调用C++程序的方法详解
2017/01/24 Python
Python设置在shell脚本中自动补全功能的方法
2018/06/25 Python
python使用插值法画出平滑曲线
2018/12/15 Python
Python自动化导出zabbix数据并发邮件脚本
2019/08/16 Python
python实现UDP协议下的文件传输
2020/03/20 Python
ipython jupyter notebook中显示图像和数学公式实例
2020/04/15 Python
使用PyQt的QLabel组件实现选定目标框功能的方法示例
2020/05/19 Python
如何在Python对Excel进行读取
2020/06/04 Python
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
联强国际笔试题面试题
2013/07/10 面试题
Java程序员面试90题
2013/10/19 面试题
求职自荐信范文格式
2013/11/29 职场文书
运动会班级口号
2014/06/09 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
2016银行求职自荐信
2016/01/28 职场文书