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 学习书 推荐
Jun 13 Javascript
js带按钮的提示框可供选择示例代码
Sep 17 Javascript
js获得参数的getParameter使用示例
Feb 26 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
Jun 17 Javascript
vue-cli webpack 开发环境跨域详解
May 18 Javascript
DVA框架统一处理所有页面的loading状态
Aug 25 Javascript
微信小程序使用swiper组件实现层叠轮播图
Nov 04 Javascript
基于vue开发微信小程序mpvue-docs跳转页面功能
Apr 10 Javascript
一些可能会用到的Node.js面试题
Jun 15 Javascript
基于JavaScript实现控制下拉列表
May 08 Javascript
vue + node如何通过一个Txt文件批量生成MP3并压缩成Zip
Jun 02 Javascript
js实现盒子滚动动画效果
Aug 09 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
2019年漫画销量排行榜:鬼灭登顶 海贼单卷制霸 尾田盛赞鬼灭
2020/03/08 日漫
BBS(php & mysql)完整版(三)
2006/10/09 PHP
PHP_MySQL教程-第一天
2007/03/18 PHP
PHP基础学习之流程控制的实现分析
2013/04/28 PHP
PHP连接和操作MySQL数据库基础教程
2014/09/29 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
jQuery EasyUI中对表格进行编辑的实现代码
2010/06/10 Javascript
jQuery timers计时器简单应用说明
2010/10/28 Javascript
Textarea与懒惰渲染实现代码
2012/01/04 Javascript
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
2013/12/23 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
2017/08/04 jQuery
JavaScript选取(picking)和反选(rejecting)对象的属性方法
2017/08/16 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
js操作二进制数据方法
2018/03/03 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
基于vue中对鼠标划过事件的处理方式详解
2018/08/22 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
[00:10]神之谴戒
2019/03/06 DOTA
动态创建类实例代码
2009/10/07 Python
Python3 执行系统命令并获取实时回显功能
2019/07/09 Python
Python基于class()实现面向对象原理详解
2020/03/26 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
CSS3制作缩略图的详细过程
2016/07/08 HTML / CSS
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
2015年先进个人自荐书
2015/03/24 职场文书
浅谈Redis的keys命令到底有多慢
2021/10/05 Redis
MySQL分区表实现按月份归类
2021/11/01 MySQL
vue 自定义组件添加原生事件
2022/04/21 Vue.js