整数的都相等
负数的反码就是符号位除外,零变一,一变零
补码就是反码的基础上加1
加1是如下变化的,转十进制各位数就是8421
0001
0010
0011
0100
0101
0110
js规定非零非空即真。undefined、null、0、NaN、""
除了上诉几个值在转换成布尔值会转成false外,其他任何对象任何值转成布尔值都是true
因为取反就是把对象转换成bool值的,所以会先把num转成布尔值,然后再取反得到true。
然后在弹出。。。
------------------------------------
不对啊,按这逻辑应该弹出true的。
~是按位取反运算,~~是取反两次。
~~的作用是去掉小数部分,因为位运算的操作值要求是整数,其结果也是整数,所以经过位运算的都会自动变成整数。
例如:
按位取反
如 unsigned char a=1;
二进制为 00000001
a=~a
现在二进制为11111110
扩展资料:
注意事项
~对操作数按位取反,两个的意思即作两次取反操作,其实是等作原数本身(操作数是32整数范围内)
~~(Math.random()*7)
即:
var n = Math.random() * 7
n = ~n
n = ~n//其实和初始值一样
和对BOOLEAN类型的作两次,操作是一个意思,只不过是把小数位给去掉了。
推荐用>>操作符,一次即可:
var n = Math.random() * 7
n = n>>0