对每个位执行NOT运算符。
所以我尝试了:
0 = 00000000000000000000000000000000
so ~0 should be
~0 = 11111111111111111111111111111111
但是当我尝试时,它返回-1
。难道11111111111111111111111111111111
在十进制中不是4294967295
吗?
对每个位执行NOT运算符。
所以我尝试了:
0 = 00000000000000000000000000000000
so ~0 should be
~0 = 11111111111111111111111111111111
但是当我尝试时,它返回-1
。难道11111111111111111111111111111111
在十进制中不是4294967295
吗?
这里的内容是有符号整数,在二进制补码中,所有位都是1的整数被解释为-1
。
4294967295
转换为二进制,然后再转换回十进制,它会变成 -1
吗? - Derek 朕會功夫4294967295
,它将被视为一个 number
并在内部表示为一个 double
,因此它不会自动转换为 -1
。但如果你对它进行位运算,它将被转换为(有符号的)32 位整数,然后位模式将被解释为 -1
。 - Daniel Fischer在无符号整数中,所有1
的位模式为4294967295
;对于一个带有超过32 位的有符号整数也是如此。对于一个以二进制补码表示的32 位有符号整数来说,它的值为-1
。
C
写的,不是 JavaScript。 - Derek 朕會功夫