『壹』 java里用Integer.parseInt()把負數的二進制轉化十進制會拋異常怎麼辦,有什麼辦法能轉化
Integer.parseInt(String s, int radix) 這個方法本身就不能轉負數,只能轉正數。如果你想轉換-1,那隻能是 Integer.parseInt("-1",2),同理,轉-123,只能 Integer.parseInt("-1111011",2),即在本身正數對應2進制之前加一個「-」號。
對於「已知一個負整數的二進制數,求這個數的十進制數」這類問題的話,那麼方法如下:
對字元串操作,取反碼,然後再按照上文所述方式轉換,就可以得到所求負數+1,再-1,就可以得到所求負數
記得給分呦,親~~~~
『貳』 java中二進制怎麼表示
二進制是計算技術中廣泛採用的一種數制。二進制數據是用0和1兩個數碼來表示的數。它的基數為2,進位規則是「逢二進一」,借位規則是「借一當二」,由18世紀德國數理哲學大師萊布尼茲發現。當前的計算機系統使用的基本上是二進制系統,數據在計算機中主要是以補碼的形式存儲的。計算機中的二進制則是一個非常微小的開關,用「開」來表示1,「關」來表示0。
1、Java中定義兩個數,然後分別列印出它們的二進製表示:
System.out.println("Java二進制7: "+Integer.toBinaryString(7));
System.out.println("Java二進制-7: "+Integer.toBinaryString(-7));
輸出:
Java二進制7:
111
Java二進制-7:
可以看到Java中對於數的表示屬於有符號的,那麼這個是怎麼來的?
7好辦,直接是111
-7轉化二進制的過程:
(1)把-7轉化成7,二進制是
111
(2)Java中對於不滿32位的int二進制自動補齊,所以變成了
(29個0)111
(3)然後取反
(29個1)000
(4)然後加1
(29個1)001
這就是-7的整個轉化過程,那麼現在有一個問題,如果有一個文本文件,每一行有八位二進制,表示的范圍是(0~255),也就是用一個位元組表示的無符號整數,如果現在要把這些二進制轉化成整數存到文件里應該怎麼做?
文件:
line1
11111110
(254)
line2
00000000
(0)
假設用Java讀進了第一行,那麼直接列印出來的值是-2,不符合要求,這時讓-2變254有兩種辦法:
(1)用Java自帶的方法,Byte.toUnsignedInt((byte)
-2)(ps.-2的二進製表示就是line1),這樣列印出來的就是254了
System.out.println(Byte.toUnsignedInt((byte) -2));
輸出:254
第二種方法的原理:
Java中-2的二進製表示:(這個二進制的後八位就是line1,可以直接列印的話Java把其當做了負數
-2)
Java中255的二進製表示:(24個『0』,8個『1』)
做與後變為:
這樣做與後表示的數就是正數了
254。可以想一下,假設每一行用2個位元組表示一個無符號數,那麼可以把每一行變成正整數用方法2怎麼做?
2.Java中的>>和>>>
'>>'
算術右移,向右移左邊補符號位
'>>>'
邏輯右移,向右移左邊補0
System.out.println("Java二進制-7: "+Integer.toBinaryString(-7));
System.out.println("-7>>2: "+Integer.toBinaryString(-7>>2));
System.out.println("-7>>>2: "+Integer.toBinaryString(-7>>>2));輸出:
Java二進制-7:
-7>>2:
-7>>>2: //正常應該這樣(00)左邊的兩個0不顯示
『叄』 Java怎麼用二進製表示負數
將負數轉化成正數的方法:1、對已知是負數的數值轉化方法:假設a為已知負數,則intb=-a;則b為所需正數;2、對不確定正負性的數值轉化方法:假設有a,正負不確定,則可用:intb=Math.abs(a);取絕對值的方式來將數值轉化成正數。
『肆』 二進制負數在java中該如何表示
0b開頭標識二進制,如 -0b1101
『伍』 java里負數的二進製表示·····
對,你做的很正確。11111011就是-5的補碼。
『陸』 java中二進制-11的源碼和反碼是多少
正數的反碼是其本身
負數的反碼是在其原碼的基礎上, 符號位不變,其餘各個位取反
以8位為例
11 原碼為 0000 1011
-11 原碼為 1000 1011
-11 反碼為 1111 0100