按位符号符号如何工作〜

时间:2018-06-06 17:04:07

标签: javascript node.js algorithm frontend bitwise-operators

所以,我已经查看了几个网站,但仍然不了解按位运算符〜的作用。基本上,我理解,当你把~4到011时,应该翻转一个像4这样用二进制表示为100的数字。然而,似乎有某种程度上变成了-5然后教程说了一些32位表示,负载是负数位数。在这一点上,我完全失去了请解释如何〜工作。

2 个答案:

答案 0 :(得分:3)

数字4不是100。它是00000000000000000000000000000100。所有这些零都被~翻转为。{/ p>

由于在转换回普通JavaScript数字时如何解释这些32位值,结果数字为负数。但我领先于自己:JavaScript中的按位运算符首先是从源编号创建临时 32位整数值。然后运算符发挥其魔力,在~的情况下,它将反转该32位值的所有位。然后将数字转换回64位双精度浮点值,这是普通的JavaScript数字类型。

32位值被解释为 signed 值,这与计算机算法的工作方式有关。可以说任何最左侧(最高位)为1的32位值都被解释为负值。

二进制数学和现代计算机(好吧,几乎所有历史计算机)的做法都是一个广泛的主题。一些编程语言提供的抽象大多隐藏了计算硬件实际的工作原理;在大多数实现中,JavaScript并不是真正的语言之一。

答案 1 :(得分:3)

4 = 00000000 00000000 00000000 00000100

~4 = 11111111 11111111 11111111 11111011

由于最左边的位是有符号32位值中的sign bit,因此负值来自。略有关联:您可能还想阅读MSBLSB