我知道〜是按位的NOT运算符,但是将数字上的位反转两次使它如何用作Math.floor Java中~~(“ double tilde”)有什么作用?描述了使用Math.floor与按位运算来舍入Java中的数字之间的区别,但是我对两次将位精确地反转如何实现这一点感兴趣。
谢谢
从规范,按位不,~
- 我们
expr
要评估的结果UnaryExpression。- 我们
oldValue
是ToInt32(GetValue(expr))
。- 返回对进行按位补码的结果
oldValue
。结果是一个有符号的32位整数。
ToInt32
这里的定义。
32位整数的“补码”i
为i XOR 0xFFFFFFFF
。
所以把所有在一起,你有~~i
作为的意义
ToInt32(i) XOR 0xFFFFFFFF XOR 0xFFFFFFFF
// same as
ToInt32(i) XOR 0x00000000
// same as
ToInt32(i)
请记住,负数在取整方向上的差异。
就我个人而言,我更喜欢使用x | 0
over,~~x
因为对于相同结果,它涉及的操作更少。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句