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用来判断一个变量的类型。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