为什么在JavaScript中〜5 === -6?

纸莎草纸

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

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

在Wikipedia(https://en.wikipedia.org/wiki/Bitwise_operation#NOT)上,它说:“按位NOT或补码是对每一位执行逻辑取反的一元运算,形成给定二进制数的补码值。0变为1,而1变为0。”

现在,以二进制数5表示: 0101

如果~5在浏览器控制台中键入,则-6其二进制表示形式为1110我希望取反后0101变成1010,实际上是10(如果以最左边的数字为正负号,则为-2)。

我读过的所有关于JavaScript~运算符的解释都表示,该运算符将数字评估为-(x + 1),但这并不能从逻辑上向我解释该运算符在“按位”级别上的操作。

基本上0101成为1110

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

斯宾塞·维克佐雷克(Spencer Wieczorek)

它确实确实执行了按位NOT运算,负数为2的补码因此,值1010-6

二进制补码基本上在最左边的位起作用,表示负数,并被视为负值。所有其他1位都添加到该数字中。例如:

1010 => (-8 +0 +2 +0) => -6
1111 => (-8 +4 +2 +1) => -1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么+(5,6)在javascript中返回6?

来自分类Dev

为什么“ [range(5,6)]中range(5,6)中的5”返回True?

来自分类Dev

为什么在Javascript上(4 + 5 +“ 6”)是96,而(“ 4” + 5 + 6)是456?

来自分类Dev

为什么const(<= 5)5 6 == False?

来自分类Dev

为什么JavaScript无法在Rails 6中正常工作?

来自分类Dev

为什么只能识别6GB RAM中的5个?

来自分类Dev

为什么Flexbox代码在Safari 5和6中不起作用?

来自分类Dev

为什么只能识别6GB RAM中的5个?

来自分类常见问题

为什么在relu6中有6个?

来自分类Dev

在以下javascript代码中,for循环中为什么会有6个不同的变量?

来自分类Dev

为什么在Javascript ES6中未定义“ i”?

来自分类Dev

echo [9876543210]显示1 4 5 6 ...为什么?

来自分类Dev

为什么负数的模数为正(-7%6 == 5)?

来自分类Dev

为什么功能打印i:6而不是i:5

来自分类Dev

为什么以下代码打印5而不是6?

来自分类Dev

为什么此代码显示6而不是5?

来自分类Dev

echo [9876543210]显示1 4 5 6 ...为什么?

来自分类Dev

为什么没有捕获的lambda从C#5中的静态更改为C#6中的实例方法?

来自分类Dev

为什么打印5 5 5而不是5 6 7?(多个单例呼叫)

来自分类Dev

JavaScript ES6`const a = {}`是可变的。为什么?

来自分类Dev

为什么Angular 2 5min Typescript教程中不包含es6-promise和zone.js

来自分类Dev

为什么在UTF-8中没有5字节和6字节的代码点?

来自分类Dev

为什么我可以在Haskell中打印包含5个元素但不包含6个元素的元组?

来自分类Dev

为什么我在iPhone5和iPhone6的模拟器中得到不同的布局

来自分类Dev

为什么$ sum 6的答案是?

来自分类Dev

为什么在Xcode 6中无法使用Assistant Preview?

来自分类Dev

为什么在EF6中忽略包括

来自分类Dev

为什么CordovaWebViewClient不再在Cordova 6中工作

来自分类Dev

为什么在Perl 6中100 ~~ ^ 100返回false?

Related 相关文章

  1. 1

    为什么+(5,6)在javascript中返回6?

  2. 2

    为什么“ [range(5,6)]中range(5,6)中的5”返回True?

  3. 3

    为什么在Javascript上(4 + 5 +“ 6”)是96,而(“ 4” + 5 + 6)是456?

  4. 4

    为什么const(<= 5)5 6 == False?

  5. 5

    为什么JavaScript无法在Rails 6中正常工作?

  6. 6

    为什么只能识别6GB RAM中的5个?

  7. 7

    为什么Flexbox代码在Safari 5和6中不起作用?

  8. 8

    为什么只能识别6GB RAM中的5个?

  9. 9

    为什么在relu6中有6个?

  10. 10

    在以下javascript代码中,for循环中为什么会有6个不同的变量?

  11. 11

    为什么在Javascript ES6中未定义“ i”?

  12. 12

    echo [9876543210]显示1 4 5 6 ...为什么?

  13. 13

    为什么负数的模数为正(-7%6 == 5)?

  14. 14

    为什么功能打印i:6而不是i:5

  15. 15

    为什么以下代码打印5而不是6?

  16. 16

    为什么此代码显示6而不是5?

  17. 17

    echo [9876543210]显示1 4 5 6 ...为什么?

  18. 18

    为什么没有捕获的lambda从C#5中的静态更改为C#6中的实例方法?

  19. 19

    为什么打印5 5 5而不是5 6 7?(多个单例呼叫)

  20. 20

    JavaScript ES6`const a = {}`是可变的。为什么?

  21. 21

    为什么Angular 2 5min Typescript教程中不包含es6-promise和zone.js

  22. 22

    为什么在UTF-8中没有5字节和6字节的代码点?

  23. 23

    为什么我可以在Haskell中打印包含5个元素但不包含6个元素的元组?

  24. 24

    为什么我在iPhone5和iPhone6的模拟器中得到不同的布局

  25. 25

    为什么$ sum 6的答案是?

  26. 26

    为什么在Xcode 6中无法使用Assistant Preview?

  27. 27

    为什么在EF6中忽略包括

  28. 28

    为什么CordovaWebViewClient不再在Cordova 6中工作

  29. 29

    为什么在Perl 6中100 ~~ ^ 100返回false?

热门标签

归档