JS知识回顾(八):取反操作

126 阅读2分钟

js取反操作

取反操作: 
1.正数转二进制,正数补码到32位 

2.按位取反 
正数的32位补码  转 反码的32位补

3.反码的二进制转回十进制 
反码的32位补码 -1 = 十进制反码 (1-1=0     0-1借位)
十进制反码转原码(符号位不变,其余位取反得到原码) 

4.原码二进制转十进制,即得结果。

在 JavaScript 中,~是按位非(取反)运算符。

它的操作步骤如下:

  1. 将数字转换为 32 位有符号整数的二进制表示形式
    整数 25 的十进制转二进制(32 位有符号整数格式,正数的原码、反码、补码相同):
    25 的二进制表示为 00000000000000000000000000011001(补码形式,因为正数原码、反码、补码一样)。

  2. 进行按位取反操作
    对 00000000000000000000000000011001 按位取反后得到 11111111111111111111111111100110

  3. 将取反后的二进制再转换回十进制数
    由于取反后得到的是补码形式,对于有符号数,要先将补码转换回原码来得到对应的十进制数。
    其反码为 11111111111111111111111111100101(补码减 1 得到反码),原码为 10000000000000000000000000011010(符号位不变,其余位取反得到原码),对应的十进制数就是 -26

所以,~25 的结果是 -26