javascript 位运算符----取反

JavaScript011

javascript 位运算符----取反,第1张

首先你要明白原码、反码、补码三个概念。

整数的都相等

负数的反码就是符号位除外,零变一,一变零

补码就是反码的基础上加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