时间:2021-05-28
在 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;
JavaScript
复制代码 代码如下:
var a = 3774191835;
var b = a >> 2;
可以看到,JavaScript 进行位运算时,是采用的有符号整型,故我们得到了不一样的结果。 怎么解决呢?
我们可以把JavaScript 中的有符号数,转换成无符号数。只需要进行 >>>0 移位操作就好了。
最好不要使用 >> ,推荐使用 >>> 因为最左边一位会被解析成符号位,当数字溢出时,会被解析成负数。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一个字节有8位,所以32位int型占用32位/8位=4个字节,64位int型占用64位/8位=8个字节.32位,64位无符号整型最大值:2^64-1=18446
位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的c
示例代码:result>>>=expression其中参数是result任何变量。expression是任何表达式。JavaScript中无符号右移赋值操作说明
32位模式下,MUL(无符号数乘法)指令有三种类型:第一种执行8位操作数与AL寄存器的乘法;第二种执行16位操作数与AX寄存器的乘法;第三种执行32位操作数与E
unsignedint的意思是无符号基本整型,当字内节容数为2时,取值范围为0到6535,当字节数为4时,取值范围为0到2的32次方减1。int的意思是基本整型