javascript ~~ 符号是什么意思呢?? 例如Array(~~(Math.random()*7));
答案:2 悬赏:0 手机版
解决时间 2021-02-20 09:35
- 提问者网友:留有余香
- 2021-02-19 23:46
javascript ~~ 符号是什么意思呢?? 例如Array(~~(Math.random()*7));
最佳答案
- 五星知识达人网友:骨子里都是戏
- 2021-02-20 00:04
~ 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。
按位运算符的最常见用法是提供特征位(为每一位填充一个布尔值)。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或
0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2
的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2
的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
~对操作数按位取反,两个的意思即作两次取反操作,其实是等作原数本身(操作数是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。
按位运算符的最常见用法是提供特征位(为每一位填充一个布尔值)。
浮点数通过舍去小数点后面的所有位来转换为整数。正整数可转换为无符号的十六进制值,其最大值为 4294967295 或
0xFFFFFFFF;转换大于最大值的值时,会舍去其最高有效位,因此该值仍保持为 32 位。负数通过 2
的补码标记转换为无符号的十六进制值,其最小值为 -2147483648 或 0x800000000;小于最小值的数可转换为精度更高的 2
的补码,然后舍去最高有效位。
由于结果被解释为 32 位 2 的补码数,因此结果将是 -2147483648 到 2147483647 范围中的一个整数。
全部回答
- 1楼网友:酒醒三更
- 2021-02-20 00:49
生成1到1000之间的随机数再对array数组的大小取余,最终得到1到数组大小-1之间的整数
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯