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 和 CSS 实现脚注(Footnote)效果
Sep 09 Javascript
jQuery源码分析-02正则表达式 RegExp 常用正则表达式
Nov 14 Javascript
关闭浏览器输入框自动补齐 兼容IE,FF,Chrome等主流浏览器
Feb 11 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
May 05 Javascript
JavaScript判断微信浏览器实例代码
Jun 13 Javascript
利用JavaScript实现拖拽改变元素大小
Dec 14 Javascript
微信小程序 页面跳转和数据传递实例详解
Jan 19 Javascript
浅谈Vuejs Prop基本用法
Aug 17 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
Aug 13 Javascript
vue自定义指令的创建和使用方法实例分析
Dec 04 Javascript
改进 JavaScript 和 Rust 的互操作性并深入认识 wasm-bindgen 组件
Jul 13 Javascript
JS实现判断移动端PC端功能
Feb 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模板页面中分页代码的解析
2009/02/06 PHP
Nginx下配置codeigniter框架方法
2015/04/07 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
js 表格隔行颜色
2009/12/02 Javascript
jQuery实现 注册时选择阅读条款 左右移动
2013/04/11 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
使用jQuery或者原生js实现鼠标滚动加载页面新数据
2016/03/06 Javascript
JS获取当前页面名称的简单实例
2016/08/19 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
JS中检测数据类型的几种方式及优缺点小结
2016/12/12 Javascript
javascript基本常用排序算法解析
2017/09/27 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
解决antd Form 表单校验方法无响应的问题
2020/10/27 Javascript
python中json格式数据输出的简单实现方法
2016/10/31 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
Python使用grequests(gevent+requests)并发发送请求过程解析
2019/09/25 Python
python实现打砖块游戏
2020/02/25 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
2021/01/29 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
HTML5实现晶莹剔透的雨滴特效
2014/05/14 HTML / CSS
东方通信股份有限公司VC面试题
2014/08/27 面试题
网络安全方面的面试题
2015/11/04 面试题
党委书记岗位职责
2013/11/24 职场文书
毕业生就业自荐信
2013/12/04 职场文书
2014年行政助理工作总结
2014/11/19 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
今日说法观后感
2015/06/08 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
Python数据分析入门之教你怎么搭建环境
2021/05/13 Python
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python
Vue3.0写自定义指令的简单步骤记录
2021/06/27 Vue.js
Javascript中Microtask和Macrotask鲜为人知的知识点
2022/04/02 Javascript