Kotlin中的shr()和ushr()命名函数之间有什么区别

Kotlin中的shr()和ushr()命名函数之间有什么区别,kotlin,Kotlin,Kotlin语言中a.shr(b)和a.ushr(b)函数的差异。使用这两个函数时,我得到的输出相同,因此请帮助了解这些函数之间的差异 shr将位向右移动 ushr也会右移,但最左边的位将填充为零 如果只对正值进行位移位,则没有区别。如果你也在负值上做,那就有很大的区别了 Int Binary -63532 11111111111111110000000000000100 -63532 u

Kotlin语言中a.shr(b)和a.ushr(b)函数的差异。使用这两个函数时,我得到的输出相同,因此请帮助了解这些函数之间的差异
  • shr
    将位向右移动
  • ushr
    也会右移,但最左边的位将填充为零
  • 如果只对正值进行位移位,则没有区别。如果你也在负值上做,那就有很大的区别了

                     Int          Binary
                     -63532       11111111111111110000000000000100    
    -63532 ushr 1    2147450882   01111111111111111000000000000010
    -63532 shr 1     -32766       11111111111111111000000000000010
                                  ^
                                  |
                              Difference
    

    在这种情况下,
    ushr
    将翻转最左边的位,因此现在是正值。

    尝试使用负数,它们不一样。shr应该保留2对负数的称赞,而ushr不应该。您要寻找的答案是函数名:
    shr
    =
    右移
    ushr
    =
    无符号右移