js取反操作
取反操作:
1.正数转二进制,正数补码到32位
2.按位取反
正数的32位补码 转 反码的32位补
3.反码的二进制转回十进制
反码的32位补码 -1 = 十进制反码 (1-1=0 0-1借位)
十进制反码转原码(符号位不变,其余位取反得到原码)
4.原码二进制转十进制,即得结果。
在 JavaScript 中,~是按位非(取反)运算符。
它的操作步骤如下:
-
将数字转换为 32 位有符号整数的二进制表示形式:
整数25的十进制转二进制(32 位有符号整数格式,正数的原码、反码、补码相同):
25的二进制表示为00000000000000000000000000011001(补码形式,因为正数原码、反码、补码一样)。 -
进行按位取反操作:
对00000000000000000000000000011001按位取反后得到11111111111111111111111111100110。 -
将取反后的二进制再转换回十进制数:
由于取反后得到的是补码形式,对于有符号数,要先将补码转换回原码来得到对应的十进制数。
其反码为11111111111111111111111111100101(补码减 1 得到反码),原码为10000000000000000000000000011010(符号位不变,其余位取反得到原码),对应的十进制数就是-26。
所以,~25 的结果是 -26。