xiaokeqi / i-learned

1 stars 0 forks source link

js位运算 #1

Open xiaokeqi opened 5 years ago

xiaokeqi commented 5 years ago

js中位运算均为32位,此处省略前面24位。 (1)正数 =》 负数 1 =》 0000 0001 =》取反 =》1111 1110 =》 加1 => 1111 1111 即-1 -x + 1 = y (2) 负数 =》 正数 -1 =》 1111 1111 =》减1 =》 1111 1110 =》取反 =》 0000 0001 即 1 -(x - 1) = y (3)按位与(&) 对每位比特位执行与(and)操作。 任一数字,与0执行按位与,均为0 任一数字,与-1执行按位与,均为x (4)按位或(|) 对每位比特位执行或(|)操作。 任一数字,与0执行按位或,均为x 任一数字,与-1执行按位与,均为-1 (5)^按位异或 任一数字x与-1进行异或操作,结果为-x (重点,可实现减操作) (6)~按位非 对任一数值 x 进行按位非操作的结果为 -(x + 1)。例如,~5 结果为 -6。 (7)<<左移 9<<2 => 9(22) => 36 9<<3 => 9(222) => 72 在数字 x 上左移 y 比特得到 x 2的y次方 (重点,可实现乘运算,如9乘2 --》9<<1 9乘4 --》9<<2 9乘6=》9乘2+9乘4 --》9<<2+9>>1) (8)>>右移(有符号) 正数,左侧用0填充,负数,左侧用1填充 (9)>>>右移(无符号) 正负数均用0填充,故正数右移与无符号右移结果一致。而负数右移,变成了正数