gpt4 book ai didi

javascript - 为什么 ~5 === -6 在 JavaScript 中?

转载 作者:可可西里 更新时间:2023-11-01 02:24:05 25 4
gpt4 key购买 nike

<分区>

注意:以下所有二进制表示都应从右到左阅读。我不确定为什么我会这样想它们,但我实际上并不知道人们也从左到右表示二进制。令人困惑!

在 MDN 关于 JavaScript 的按位运算符 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_NOT) 的文章中,它说 ~ 运算符是按位的 NOT 运算符。

在维基百科 (https://en.wikipedia.org/wiki/Bitwise_operation#NOT) 上,它说“按位非或补码是一种一元运算,它对每个位执行逻辑非,形成给定二进制值的补码。0 位变为 1,那些为 1 的变成 0。”

现在,取二进制数 5:0101

如果我在浏览器控制台中键入 ~5,我将得到 -6,其二进制表示为 1110。我希望否定将 0101 变成 1010,这实际上是 10(如果最左边的数字被当作符号,则为 -2)。

我读到的关于 JavaScript 的 ~ 运算符的所有解释都说它将数字计算为 -(x+1),但这并没有从逻辑上向我解释该运算符在“按位”级别。

基本上,0101 变成了 1110

见证这种转变的中间步骤是什么?我看到前导位被翻转,从而改变了符号。但这就是我所能收集到的全部信息。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com