一、十進制和二進制的由來
十進制是中國的基礎系統。“逢十進一”
進位制是人爲計數和運算方便而約束的計數系統。
二進制:“逢二進一”
二、進制轉換
十進制: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指編碼方式