㈠ 關於java中負數計算的一些問題
給你用8位的解釋一下:
-3的補碼轉換過程:(1)、先寫出-3的原碼為 1000 0011(最前邊的1為符號位),然後求出-3的反碼為 1111 1100,則-3的補碼就為1111 1101 ,其中原碼轉補碼的規則為除過符號位,逐位取反,末尾加1,所以-3的補碼為:1111 1101。
右移兩位,就變為1111 1111,其中高位用1填充。
㈡ JDK Integer.java的toString為什麼i是正數要轉換為負數處理
Integer.max_value = 01111111 111111111111111111111111
+1 = 10000000 00000000 00000000 00000000
最高位是符號位為1,這個數是負數,負數的源碼是補碼取反+1,剛好等於Integer.min_value
結果當然是負數了,Integer的最小值
㈢ 為什麼java中文轉byte出現負數
GBK採用雙位元組8位表示,總體編碼范圍為 8140 -- FEFE,首位元組在 81 -- FE 之間,尾位元組在 40 -- FE 之間。
ASCII是7位編碼,只使用前7位,第8位補0,所以轉換成整數始終為正數,而GBK是8位編碼,也就是說一個位元組中的第8位可以為1,如1010 1101,而將其轉換成byte類型時,byte值為10101101,以補碼存儲,第8位被當成符號位,當然是負數了,值為:-83。
「何」字的GBK編碼是:BA CE(1011 1010 1100 1110),兩個位元組第8位都為1,對byte類型來說,都被理解為最高位符號位。這樣值就變成-70和-50了。
㈣ java里用Integer.parseInt()把負數的二進制轉化十進制會拋異常怎麼辦,有什麼辦法能轉化
Integer.parseInt(String s, int radix) 這個方法本身就不能轉負數,只能轉正數。如果你想轉換-1,那隻能是 Integer.parseInt("-1",2),同理,轉-123,只能 Integer.parseInt("-1111011",2),即在本身正數對應2進制之前加一個「-」號。
對於「已知一個負整數的二進制數,求這個數的十進制數」這類問題的話,那麼方法如下:
對字元串操作,取反碼,然後再按照上文所述方式轉換,就可以得到所求負數+1,再-1,就可以得到所求負數
記得給分呦,親~~~~
㈤ java如何表示負數
int i = -1;望採納,你不想使用負號標示那就用2進制唄