Java,C 位移運算符 有符號右移>>與無符號右移>>>



個人博客 地址:https://www.wenhaofan.com/a/20181029232749

有符號右移

     正數有符號右移

        首先計算4>>2

        將4轉為二進制

        0000 0100

        右移兩位,符號位為0,所以高位置0得

        0000 0001

        轉二進制得 1

        所以 4>>2 =1

        

     負數有符號右移

        再來計算-4>>2 

        首先我們需要取得-4的補碼 補碼為反碼+1

        反碼為正碼按位取反

        由正碼0000 0100  取反得

        1111 1011

        再+1得

        1111 1100

        右移兩位,符號位為1,所以高位置1得

        1111 1111

        此時減一得補碼

        1111 1110

        補碼轉正碼得

        0000 0001

        十進制為1,加負號得

        -1

無符號右移

     正數無符號右移

        6>>>2

        正數無符號右移

        取6的二進制

        0000 0000 0000 0000 0000 0000 0000 0110

        右移2位,最高位置0

        0000 0000 0000 0000 0000 0000 0000 0001

        轉為10進制得

        1

        

     負數無符號右移

        -6 >>>2

        先得6的二進制

        0000 0000 0000 0000 0000 0000 0000 0110

        按位取反,得反碼

        1111 1111 1111 1111 1111 1111 1111 1001

        反碼+1得補碼

        1111 1111 1111 1111 1111 1111 1111 1010

        右移,高位置0得

        0011 1111 1111 1111 1111 1111 1111 1110

        轉10進制得

        1073741822


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM