java 二進位制與負數互相轉化
阿新 • • 發佈:2018-10-31
負數表示
首先我們要對原碼、反碼和補碼有個瞭解:
1、所謂原碼就是二進位制定點表示法,即最高位為符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
2、反碼錶示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
原碼10010= 反碼11101 (10010,1為符號碼,故為負)
(11101) 二進位制= -13 十進位制
3、補碼錶示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。
舉一例,我們來看整數-1在計算機中如何表示。
假設這也是一個int型別,那麼:
1、先取1的原碼:00000000 00000000 00000000 00000001
2、得反碼: 11111111 11111111 11111111 11111110
3、得補碼: 11111111 11111111 11111111 11111111
十六進位制表示: 0xFFFFFFFF
所以Java中Integer.toBinaryString(-5)結果為11111111111111111111111111111011. Integer是32位(bit)的.
負數轉二進位制規律:
1、取負數的絕對值的原碼;
2、計算原碼的反碼;
3、對反碼加一,獲取補碼。
3轉為二進位制
3
0011
1100
1101
二進位制負數(開頭為1)轉為十進位制負數
1、 對二進位制減一
2、 對此數取反碼
3、 得到此數的十進位制
1101
1100
0011
3
java 二進位制與十進位制互相轉化
int num=3; String s=Integer.toBinaryString(num); //負數轉十進位制 BigInteger bi = new BigInteger(num); bi.toString(2); int a=Integer.valueOf(s,2); //當二進位制位負數時 BigInteger bi = new BigInteger(s., 2); return bi.intValue();