java基礎資料型別 (Elementary Data Type)與二進位__java

來源:互聯網
上載者:User

1.表格比較:


2.轉換成二進位:

java用byte位元組來表示二進位,因為byte有8位,而int有32位,所以int轉成二進位應該去掉高位儲存最低的8個位,如下代碼:

public static byte[] intToBytes( int value ) { byte[] src = new byte[4];src[3] =  (byte) ((value>>24) & 0xFF);src[2] =  (byte) ((value>>16) & 0xFF);src[1] =  (byte) ((value>>8) & 0xFF);  src[0] =  (byte) (value & 0xFF);for (byte b : src) {System.out.println(b);}return src; }

int是4位元組,所以所以轉成byte肯定是位元組數組,其他幾種類型可參照int,具體差不多

3.java移位元運算:

左位移低位補碼,有位移高位補碼,如:右位移500>>24意思是左邊補上24個0,然後從左向右取32位是得到的結果;左位移是右邊補0,從右向左算

這是對無符號的,有符號暫時不清楚,待補。。。。。。


4.二進位與位元組:

byte表示的範圍是-128——127,最高位0表示正,1表示負,所以是2^7 - 1


概念:java中用補碼錶示位元,補碼的最高位是符號位,最高位為“0”表示正數,最高位為“1”表示負數。
正數補碼為其本身;
負數補碼為其絕對值各位取反加1;
例如:
+21,其二進位表示形式是00010101,則其補碼同樣為00010101
-21,按照概念其絕對值為00010101,各位取反為11101010,再加1為11101011,即-21的二進位表示形式為11101011


步驟:
1、byte為一位元組8位,最高位是符號位,即最大值是01111111,因正數的補碼是其本身,即此正數為01111111
十進位表示形式為127
2、最大正數是01111111,那麼最小負是10000000(最大的負數是11111111,即-1)
3、10000000是最小負數的補碼錶示形式,我們把補碼計算步驟倒過來就即可。10000000減1得01111111然後取反10000000
因為負數的補碼是其絕對值取反,即10000000為最小負數的絕對值,而10000000的十進位表示是128,所以最小負數是-128
4、由此可以得出byte的取值範圍是-128到+127
5、說明:各個類型取值範圍的計算方法與此大致相同,感興趣的同學可以自己試著計算


補充(給非電腦專業的同學掃下盲):
在電腦內,定點數有3種標記法:原碼、反碼和補碼
[原碼]就是二進位定點標記法,即最高位為符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
[反碼]標記法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
[補碼]標記法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。


所以System.out.println((byte)170);的結果是-86

170的二進位是10101010,取反是1010101,表示的十進位是85,然後加1,因為最高位是1代表負數所以結果是-86





聯繫我們

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