0
A
回答
3
~
是bitwise negation operator[MDN]。
二进制(使用32位整数)3
是
0000 0000 0000 0000 0000 0000 0000 0011 (3)
和二进制-3
(使用two's complement)是
1111 1111 1111 1111 1111 1111 1111 1101 (-3)
的~
操作者互换所有1
S的0
s和所有0
s到1
,所以~3
将是
1111 1111 1111 1111 1111 1111 1111 1100 (~3 == -4)
这是二进制的-4
(使用two's complement)。
同样,~-3
将
0000 0000 0000 0000 0000 0000 0000 0010 (~-3 == 2)
是二进制为2
。
3.346346
在执行按位运算时会被转换为整数,因此它将具有与3
相同的结果。
综上所述:
3 = 0000 0000 0000 0000 0000 0000 0011 = (int)3.346346
~3 = 1111 1111 1111 1111 1111 1111 1100 = -4
-3 = 1111 1111 1111 1111 1111 1111 1101
~-3 = 0000 0000 0000 0000 0000 0000 0010 = 2
+0
非常好的回答,赞扬! – joseeight
0
这是因为负数被存储为补:
minusB = ~B + 1;
在你的情况下,扭转上述公式:
-3
存储为~3 + 1
。因此,~-3
相当于-(-3) - 1 = 2
。~3.346346
先四舍五入至3
,然后~3
可以理解为-3 - 1 = -4
为什么补使用(而不是使用符号的独立位)的原因,是它使减法和加法无关紧要,无关紧要。
相关问题
- 1. Javascript中的否定空格
- 2. Javascript window.location.hash是否定义?
- 3. Javascript:确定PopUp中的URL是否改变/被重定向
- 4. JavaScript的正则表达式 - 的否定(:)
- 5. Javascript关闭 - 什么是否定的?
- 6. JavaScript中的正则表达式模式的否定
- 7. 检查XML中的值是否是未定义的(Javascript)
- 8. javascript中的双重否定(!!) - 目的是什么?
- 9. JavaScript中的否定运算符?它是如何工作的?
- 10. 确定输入数字在javascript中是否定或正数
- 11. 如何检查参数是否在JavaScript中的函数定义中定义?
- 12. Python中的否定
- 13. javascript正则表达式中的精确字符串否定
- 14. 确定对象是否具有javascript中的属性和值
- 15. 检查日期是否采用Javascript中的给定格式
- 16. 如何确定一天是否在JavaScript中的PST或PDT
- 17. JavaScript中if(变量)的确切否定是什么?
- 18. 如何否定javascript数组中的所有元素
- 19. JavaScript中的否定匹配正则表达式
- 20. 如何确定日期是否是在javascript中的周末
- 21. 这些在javascript中定义函数的方式是否相等?
- 22. PHP:如何确定浏览器是否支持PHP中的JavaScript?
- 23. JavaScript中的.call是否将自身绑定到调用对象?
- 24. javascript-检查数组中的元素是否是特定变量
- 25. 在javascript中,是否有完美的方式来定义类
- 26. 确定变量是否是Javascript中的对象数组
- 27. 如何确定JavaScript中的一组字符是否为UTF-8?
- 28. 如何确定我的JavaScript是否在nodejs中运行
- 29. 是否已经在JavaScript中定义了id的html元素?
- 30. 确定浏览器是否支持iFrame中的JavaScript?
看到和理解补:http://stackoverflow.com/questions/1049722/what-is-2s-complement的第一个 – Matt
输出是也'2'。你似乎搞砸了你的例子。 – Stijn
@Stijn不,给出的例子是正确的。 –