java 資料類型之原碼,補碼,反碼

來源:互聯網
上載者:User

為了更清楚的理解一些資料運算,對資料的二進位表示要瞭解:

1)原碼錶示法

    原碼錶示法是機器數的一種簡單的標記法。其符號位用0表示正號,用:表示負號,數值一般用二進位形式表示。設有一數為x,則原碼錶示可記作[x]原。

    例如,X1= +1010110

          X2= 一1001010

    其原碼記作:

            [X1]原=[+1010110]原=01010110

            [X2]原=[-1001010]原=11001010

    原碼錶示數的範圍與二進位位元有關。當用8位二進位來表示小數原碼時,其表示範圍:

      最大值為0.1111111,其真值約為(0.99)10

      最小值為1.1111111,其真值約為(一0.99)10

當用8位二進位來表示整數原碼時,其表示範圍:

      最大值為01111111,其真值為(127)10

      最小值為11111111,其真值為(-127)10

      在原碼錶示法中,對0有兩種表示形式:

          [+0]原=00000000

           [-0]原=10000000

2)補碼錶示法

    機器數的補碼可由原碼得到。如果機器數是正數,則該機器數的補碼與原碼一樣;(轉自:圖碼網)如果機器數是負數,則該機器數的補碼是對它的原碼(除符號位外)各位取反,並在未位加1而得到的。設有一數X,則X的補碼錶示記作[X]補。

      例如,[X1]=+1010110

            [X2]= 一1001010

            [X1]原=01010110

            [X1]補=01010110

    即      [X1]原=[X1]補=01010110

            [X2]原= 11001010

            [X2]補=10110101+1=10110110

    補碼錶示數的範圍與二進位位元有關。當採用8位二進位表示時,小數補碼的表示範圍:

      最大為0.1111111,其真值為(0.99)10

      最小為1.0000000,其真值為(一1)10

採用8位二進位表示時,整數補碼的表示範圍:

      最大為01111111,其真值為(127)10

      最小為10000000,其真值為(一128)10

      在補碼錶示法中,0隻有一種表示形式:

        [+0]補=00000000

        [+0]補=11111111+1=00000000(由於受裝置字長的限制,最後的進位丟失)

所以有[+0]補=[+0]補=00000000

3)反碼錶示法

    機器數的反碼可由原碼得到。如果機器數是正數,則該機器數的反碼與原碼一樣;如果機器數是負數,則該機器數的反碼是對它的原碼(符號位除外)各位取反而得到的。設有一數X,則X的反碼錶示記作[X]反。

    例如:X1= +1010110

          X2= 一1001010

        [X1]原=01010110

         [X1]反=[X1]原=01010110

         [X2]原=11001010

         [X2]反=10110101

    反碼通常作為求補過程的中間形式,即在一個負數的反碼的未位上加1,就得到了該負數的補碼。

例1. 已知[X]原=10011010,求[X]補。

分析如下:

由[X]原求[X]補的原則是:若機器數為正數,則[X]原=[X]補;若機器數為負數,則該機器數的補碼可對它的原碼(符號位除外)所有位求反,再在未位加1而得到。現給定的機器數為負數,故有[X]補=[X]原十1,即

          [X]原=10011010

          [X]反=11100101

     十)         1     

 

          [X]補=11100110

 

 

例2. 已知[X]補=11100110,求[X]原。

         分析如下:

     對於機器數為正數,則[X]原=[X]補

     對於機器數為負數,則有[X]原=[[X]補]補

現給定的為負數,故有:

            [X]補=11100110

        [[X]補]反=10011001

              十)         1   

 

        [[X]補]補=10011010=[X]原

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.