javascript - ~~(“双波浪号”)在 Javascript 中的作用是什么?

javascript - ~~(“双波浪号”)在 Javascript 中的作用是什么?

它会删除小数点后的所有内容,因为按位运算符将其操作数隐式转换为有符号的 32 位整数。无论操作数是(浮点)数字还是字符串,这都有效,结果是数字。

换句话说,它产生:

function(x) {

if(x < 0) return Math.ceil(x);

else return Math.floor(x);

}

仅当x介于 -(2 31 ) 和 2 31 - 1 之间时。否则,将发生溢出并且数字将“环绕”。

这对于将函数的字符串参数转换为数字可能被认为是有用的,但是由于溢出的可能性以及与非整数一起使用不正确,我不会以这种方式使用它,除了“代码高尔夫”(即以牺牲可读性和健壮性为代价,毫无意义地从程序的源代码中删除字节)。我会使用+xorNumber(x)代替。

这怎么是NOT的NOT

数字-43.2,例如是:

-43.2 10 = 11111111111111111111111111010101 2

作为有符号(二进制补码)32 位二进制数。(JavaScript 忽略小数点后的内容。)反转位给出:

非 -43 10 = 00000000000000000000000000101010 2 = 42 10

再次反转给出:

非 42 10 = 11111111111111111111111111010101 2 = -43 10

这不同于Math.floor(-43.2)负数向零舍入,而不是远离零。(等于 -44 的 floor 函数总是向下舍入到下一个较小的整数,无论​​该数字是正数还是负数。)

相关数据

《破门而入:行动小队
[冰雪]国际雪联大跳台世界杯北京站 自由式滑雪决赛
天杞园减肥特膳有效吗(天杞园减肥特膳:究竟有效还是无用呢?)

友情链接