undefined、null、0、NaN、""
除了上诉几个值在转换成布尔值会转成false外,其他任何对象任何值转成布尔值都是true
因为取反就是把对象转换成bool值的,所以会先把num转成布尔值,然后再取反得到true。
然后在弹出。。。
------------------------------------
不对啊,按这逻辑应该弹出true的。
int型是32位整型数据类型,int型的8在内存里占32bit,存储为00000000 00000000 00000000 00001000
,按位取反操作后,就变成了你输出的那样。而且这个二进制默认是有符号型的整数,其最高位的1是代表负号,我们知道二进制负数表示为数值位取反再加1(也就是补码),依照这个,对你输出的数减1,取反(第一个1是符号位,不变),得到其原码:
10000000 00000000 00000000 00001001,
也就是负9。