js中的按位运算

javascript中的数字也是按照IEEE754的标准存储的,按64位存储,但是操作符不会直接去操作64位,会将64位数转换成32位整数操作,完成运算后再转换成64位,这个64位对用户来说是透明的。
虽然经常写js,但是还是对一些按位运算比较迷茫。对于32位有符号整数,最高位为符号,正数最高位0,负数最高位1,负数按二进制补码存储。NaN和Inifinity在位操作中都被当成0对待

按位取反

0000 0000 0000 0000 0000 0000 0000 1010
=>
1111 1111 1111 1111 1111 1111 1111 0101 (负数)
=>
-0000 0000 0000 0000 0000 0000 0000 1011

对x取反相当于<=>-x-1

按位与&

按照1&1为1,其它都为0

按位或|

按照0|0为0,其它都为1

按位亦或^

按照0^0为1,1^1为1,其它都为0

左移<<

右边的空位用0补齐

右移>>

左边的空位正数用0补齐,负数用1补齐

无符号右移>>>

左边的空位用0补齐

typeof

typeof用来判断一个变量的类型。

typeof null => 'object'
typeof number => 'number'
typeof object => 'object'
typeof function => 'function'
typeof array => 'object'
typeof 正则表达式 => 老版本safari和chrome返回'function',其它情况返回'object'

注意:

console.log(a) // a未定义会报错
typeof a // a未定义,返回undefined
    原文作者:位运算
    原文地址: https://segmentfault.com/a/1190000012768219
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞