JAVA從入門到精通(7)-- 進制基礎

一、十進制和二進制的由來

十進制是中國的基礎系統。“逢十進一”

進位制是人爲計數和運算方便而約束的計數系統。

二進制:“逢二進一”

二、進制轉換

十進制:10個數,0-9,十進一

二進制:2個數,0、1,二進一

位權:一個數碼在不同的位置上所代表的值不同

例如:       10進制 -    83296

10進制:  8                3                  2                 9               6

 2 進制:    1000         0011            0010          1001         0110

    十進制轉換爲二進制:採用短除2,直到除不開,得到餘數,從下往上數即得到十進制對應的二進制。

    二進制轉換爲十進制:採用權位乘以2,相加的和即爲二進制對應的十進制。

三、位運算

二進制的位運算:

1》&    與運算           例如:6&3=2

2》|      或運算    例如:6|3=7

3》^     異或運算    例如:6^3=5

4》~    反碼     例如:~6=-7

5》<<  左移     例如:3<<2=12   即3*2*2=12

6》>>  右移             例如:3>>1 = 1    即3/2=1

7》>>>無符號右移   例如:3>>>1 = 1    即3/2=1

我們分別講解每一個操作:

1》按位與 &
規則:兩位全爲1,結果才爲1

例如:51&5 即0011 0011 & 0000 0101 ,因此51&5 = 1

特殊用法:

1》清零 。如果想將一個單元清零,即使其全部二進制爲0,只要與一個各位都爲零的數值相與,結果爲零
2》取一個數中指定位。找一個數,對應X要取的位,該數的對應位爲1,其餘位爲0,此數與X進行“與運算”可以得到X中的指定位
2》按位或 |

規則:只要有一個爲1,結果就爲1

特殊用途:

1》常用來對一個數據的某些位置1。找到一個數,對應X要置1的位,該數的對應位爲1,其餘位爲零。此數與X相或可使X中的某些位置1

3》異或運算^

規則:兩個相應位爲“異”(值不同),則該位結果爲1,否則爲0

特殊用途:

1》使特定位翻轉。找一個數,對應X要翻轉的各位,該數的對應位爲1,其餘位爲0,此數與X對應位異或即可

2》與0相異或,保留原值

  利用2》的方法,可以實現:兩個變量交換值

1.藉助第三個變量來實現

C=A ; A=B ; B=C ;

2.利用加減法實現兩個變量的交換

A=A+B ; B=A-B ; A=A-B

3.用位異或運算來實現,也是效率最高

原理:利用一個數異或本身等於0和異或運算符合交換律

如:A=A^B ; B=A^B ;A=A^B

4》取反運算 ~

規則:對一個二進制數按位取反,即將0變1,1變0

5》左移運算  <<

規則:將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)

若左移時捨棄的高位不包含1,則每左移一位,相當於該數乘以2

6》右移運算 >>

規則:將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。

  操作數每右移一位,相當於該數除以2

7》無符號右移運算 >>>

規則:各個位向右移指定的位數。右移後左邊空出的位用0來填充。移出右邊的位被丟棄。

8》負數以其正值的補碼形式表示

原碼:一個整數按照絕對值大小轉換成的二進制數稱爲原碼。

反碼:將二進制數按位取反,所得的新二進制數稱爲原二進制的反碼。

補碼:反碼加1稱爲補碼

四、Java內置的進制轉換

1》十進制轉爲其他進制

轉爲二進制:Integer.toBinaryString(112);

轉爲十六進制:Integer.toHexString(112);

轉爲進制:Integer.toOctalString(112);

2》其他進制轉爲十進制

二進制轉爲十進制:Integer.parseInt("111001",2);

八進制轉爲十進制:Integer.parseInt("27",8);

十六進制轉爲十進制:Integer.parseInt("A8",16);

五、Java中的進制

1》Java中的數據類型

1》int數據類型:byte(8bit ,-128~127)、short(16bit)、int(32bit)、long(64bit)

2》float數據類型:單精度(32bit float)、雙精度(64bit double)

3》boolean類型變量的取值有:true、false

4》char數據類型有:unicode字符,16位

2》對應的類類型

Integer、Float、Boolean、Character、Double、Short、Byte、Long

3》數據類型轉化字節

小端法(Little-Endian)

低位字節排放在內存的低地址端即該值的起始地址,高位字節排放在內存的高地址端

大端法(Big-Endian)

高位字節排放在內存的低地址端即該值的起始地址,低位字節排放在內存的高地址端

4》字符串轉化爲字節

String s;

byte[ ]   bs  = s.getBytes();

 字節數組如何轉化爲字符串

Byte[ ]   bs = new byte[int];

String s = new  String(bs);

或:String  s = new  String(bs,encode);//encode指編碼方式


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章