加入收藏 | 设为首页 | 会员中心 | 我要投稿 驾考网 (https://www.jiakaowang.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

JavaScript 32位整型无符号操作例子

发布时间:2023-08-15 14:32:55 所属栏目:教程 来源:
导读:在 JavaScript 中,所有整数字变量默认都是有符号整数,这意味着什么呢?

有符号整数使用 31 位表示整数的数值,用第 32 位表示整数的符号,0 表示正数,1 表示负数。

数值范围从 -2^31 - 2^31-1 即 -214748
在 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 移位操作就好了。
 
最好不要使用 >> ,推荐使用 >>> 因为最左边一位会被解析成符号位,当数字溢出时,会被解析成负数。
 
 

(编辑:驾考网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章