Kotlin 语言中 a.shr(b) 和 a.ushr(b) 函数的区别。使用这两个函数时,我得到相同的输出,所以请帮助了解这些函数之间的区别
1 回答
8
shr将您的位向右移动ushr也右移,但用零填充最左边的位
如果您只对正值进行位移,则没有区别。如果你也在负值上做这件事,那会有很大的不同。
Int Binary
-63532 11111111111111110000000000000100
-63532 ushr 1 2147450882 01111111111111111000000000000010
-63532 shr 1 -32766 11111111111111111000000000000010
^
|
Difference
在这种情况下,ushr将翻转最左边的位,因此您现在拥有一个正值。
于 2020-08-03T16:27:01.910 回答