~ bitwise NOT 运算符

~对操作数按位取反,两个的意思即作两次取反操作,其实是等作原数本身(操作数是32整数范围内)

 

~~(Math.random()*7)

var n = Math.random() * 7;
n = ~n;
n = ~n;//其实和初始值一样

和对BOOLEAN类型的作两次!操作是一个意思,只不过是把小数位给去掉了。

推荐用>>操作符,一次即可:

var n = Math.random() * 7;
n = n>>0;

 

~运算符的详细解释:

 

将 expression 转换为一个 32 位带符号整数,然后按位对 1 求补。即,将结果中为 0 的每一位设置为 1,并将结果中为 1 的每一位设置为 0。结果是一个带符号的 32 位整数。此运算符也称为对一求补运算符或按位求补运算符。

例如,十六进制值 0x7777 表示为二进制数:


0111011101110111

该十六进制值 ~0x7777 的按位取反的二进制数为:


1000100010001000

在十六进制中,它是 0x8888。因此,~0x7777 就是 0x8888。


位运算符的最常见用法是提供特征位(为每一位填充一个布尔值)。

posted on 2019-08-26 20:07  qqhfeng16  阅读(1187)  评论(0编辑  收藏  举报