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 相关文章推荐
js 对象是否存在判断
Jul 15 Javascript
javascript 函数调用的对象和方法
Jul 01 Javascript
JS面向对象编程之对象使用分析
Aug 19 Javascript
基于jquery的一行代码轻松实现拖动效果
Dec 28 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
Aug 08 Javascript
scrollWidth,clientWidth,offsetWidth的区别
Jan 13 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
Oct 27 Javascript
Bootstrap时间选择器datetimepicker和daterangepicker使用实例解析
Sep 17 Javascript
javascript跨域请求包装函数与用法示例
Nov 03 Javascript
jquery html5 视频播放控制代码
Nov 06 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
Apr 25 Javascript
vue 实现setInterval 创建和销毁实例
Jul 21 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中集成PayPal标准支付的实现方法分享
2012/02/06 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
js 实现的可折叠留言板(附源码下载)
2014/07/01 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
React-Native左右联动List的示例代码
2017/09/21 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
在element-ui的el-tree组件中用render函数生成el-button的实例代码
2018/11/05 Javascript
微信小程序判断用户是否需要再次授权获取个人信息
2019/07/18 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
对django中render()与render_to_response()的区别详解
2018/10/16 Python
Python获取航线信息并且制作成图的讲解
2019/01/03 Python
Python小游戏之300行代码实现俄罗斯方块
2019/01/04 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
python中类的输出或类的实例输出为这种形式的原因
2019/08/12 Python
Matlab使用Plot函数实现数据动态显示方法总结
2021/02/25 Python
利用CSS3的线性渐变linear-gradient制作边框的示例
2016/06/02 HTML / CSS
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
高中同学聚会邀请函
2014/01/11 职场文书
优秀中学生事迹材料
2014/01/31 职场文书
护理专科学生自荐书
2014/07/05 职场文书
租房协议书范例
2014/10/14 职场文书
2014年基建工作总结
2014/12/12 职场文书
政协委员个人总结
2015/03/03 职场文书
大学推普周活动总结
2015/05/07 职场文书
运动会通讯稿600字
2015/07/20 职场文书
Go语言安装并操作redis的go-redis库
2022/04/14 Golang