js中的按位运算

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

按位取反

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-1java

按位与&

按照1&1为1,其它都为0正则表达式

按位或|

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

按位亦或^

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

左移<<

右边的空位用0补齐ip

右移>>

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

无符号右移>>>

左边的空位用0补齐io

typeof

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

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

注意:safari

console.log(a) // a未定义会报错
typeof a // a未定义,返回undefined
相关文章
相关标签/搜索