Java 負數的二進位制轉換問題

2021-09-23 08:04:42 字數 880 閱讀 3441

system.out.println(0b11110100);    //244
想通過這行**列印輸出-12(-12的補碼是11110100)

結果列印結果是:244

結果分析:因為系統預設列印的是按照int型別輸出的,int型別有32位,如果不夠32位系統會自動在前面補0

system.out.println(0b11111111111111111111111111110100);    //-12
列印結果:-12

system.out.println((long)0b11111111111111111111111111110100);	//-12
轉換為long以後結果依然為-12

原因:強制轉換32位的二進位制數,每個位都已經確定,結果和原來一樣。如果少了乙個1結果就會變得不同了,因為系統會在前面補乙個0湊夠32位後再強制轉換位long,結果就會變成正數

system.out.println(0b11110100);	//244

system.out.println((long)0b11111111111111111111111111110100); //-12

system.out.println((byte)0b11110100); //-12

system.out.println((int)(byte)0b11110100); //-12

system.out.println((long)(byte)0b11110100); //-12

負數的二進位制

先舉個正確的例子 7的二進位制形式可以表示如下 00000000 00000000 00000000 00000111 7的二進位制形式可以表示如下 11111111 11111111 11111111 111110011 左邊為高位,右邊為低位 2 最高位為符號位,正數的符號位為0,負數的符號位為...

c 二進位制 負數 二進位制概念

我們平時認識的數字比如1 2 3 4等數字叫做十進位制數字,我們可以看懂,但是計算機無法運算,如果計算機要計算這些數字就得將這些數字轉換成計算機能讀懂的資料,計算只能讀懂二進位制數字,二進位制的數字有什麼特徵呢?二進位制就是由1和0組成的數字,那麼為什麼計算機要使用二進位制資料呢?下面作為了解。a ...

將負數轉換為二進位制

我們已經知道計算機中,所有資料最終都是使用二進位制數表達。我們也已經學會如何將乙個10進製數如何轉換為二進位制數。不過,我們仍然沒有學習乙個負數如何用二進位制表達。比如,假設有一 int 型別的數,值為5,那麼,我們知道它在計算機中表示為 00000000 00000000 00000000 000...