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 未结束的字符串常量常见解决方法
Jan 24 Javascript
js 获取计算后的样式写法及注意事项
Feb 25 Javascript
谈谈JavaScript中的函数与闭包
Apr 14 Javascript
jQuery实现的fixedMenu下拉菜单效果代码
Aug 24 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
Aug 28 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
May 30 Javascript
javascript深拷贝和浅拷贝详解
Feb 14 Javascript
vue中的适配px2rem示例代码
Nov 19 Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
JavaScript链式调用实例浅析
Dec 19 Javascript
async/await优雅的错误处理方法总结
Jan 30 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
Mar 06 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利用header函数实现文件下载时直接提示保存
2009/11/12 PHP
简单的PHP留言本实例代码
2010/05/09 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
PHP PDOStatement::bindParam讲解
2019/01/30 PHP
七种PHP开发环境搭建工具
2020/06/28 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
JQuery困惑—包装集 DOM节点
2009/10/16 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
javascript设计模式之对象工厂函数与构造函数详解
2015/07/30 Javascript
实现音乐播放器的代码(html5+css3+jquery)
2015/08/04 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
详解Vue.js分发之作用域槽
2017/06/13 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
node基于async/await对mysql进行封装
2019/06/20 Javascript
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Python获取二维矩阵每列最大值的方法
2018/04/03 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
Html5元素及基本语法详解
2016/08/02 HTML / CSS
太阳镜仓库,售价20美元或更少:Sunglass Warehouse
2016/09/28 全球购物
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
一套Java笔试题
2016/08/20 面试题
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
新郎新娘婚礼答谢词
2014/01/11 职场文书
领导班子四风表现材料
2014/08/23 职场文书
学习保证书怎么写
2015/02/26 职场文书
停电通知范文
2015/04/16 职场文书
人事任命通知
2015/04/20 职场文书
Redis实现短信验证码登录的示例代码
2022/06/14 Redis