JVM 原理整數在java虛擬機器中的表示

來源:互聯網
上載者:User

在java虛擬機器中,整數有byte,short,int,long四種,分別為8位,16位,32位,64位有符號整數。整數在電腦中使用補碼錶示,在java虛擬機器中也是以補碼的形式表示;

補碼定義:負數的補碼為反碼加1,整數的反碼就是它的原碼;

什麼是原碼:原碼就是符號位加上數位二進位表示。

以int為例:第1位表示符號位(正數或者負數),其餘31位表示該數位二進位值。

10的原碼為:00000000000000000000000000001010

-10的原碼為:10000000000000000000000000001010

對於原碼來說,絕對值相同的正數和負數只有符號位不同。

反碼就是在原碼的基礎上,符號位不變,其餘取反,以-10為例,其反碼為

11111111 11111111 11111111 11110101

負數的補碼為反碼加1,整數的補碼為原碼本身。

因此,10的補碼為:

00000000000000000000000000001010

而-10的補碼為:

11111111 11111111 11111111 11110110

java 中,可以使用位元運算查看整數中每一位的實際值,方法如下:

int a = -10;

for(int i=0;i<32;i++){

       int t=(a&0x80000000>>>i)>>>(31-i);

     System.out.printl(t);

}

該代碼運行結果為:

11111111 11111111 11111111 11110110

用補碼錶示的有點有兩個:

1.統一了數字0的表示;

2.簡化整數加減法計算,將減法視為加法計算,實現減法和加法的完全統一,實現正數和負數加法的統一。



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.