int a=0200;
system.out.println((byte)a);
你認為應該輸出什麼?
我們再看
int a = 200;
system.out.println((byte)a);
結果是-56
int a = 0200;
system.out.println((byte)a);
結果是-128
int a = 0200;
system.out.println(a);
結果是128
為什麼呢?
int a=0200;
0200 是個八進位制數,十進位制值為 128 (以0為開頭的數字為八進位制)
system.out.println((byte)a);
先看看 int 型別的 128 用二進位制表示為:
0000 0000 0000 0000 0000 0000 1000 0000
再採用 byte 強制向下轉型時會擷取最低的 8 位,即擷取到 1000 0000
byte 是有符號數,因此高位的 1 是個符號位,表示這個數是個負數。
byte 的 1000 0000 轉為十進位制表示可以這樣做,將所有的非符號位取反,再加 1,最後新增負號就行了
比如:1000 0000 的非符號位為 000 0000,取反後為 111 1111,再加 1 為 1000 0000,即 128,再添上
負號變成 -128,這也就說明 byte 的 1000 0000 值為 -128。
資料型別 型別轉換
這樣的語句將報錯,因為char型別精度低於int型別,編譯器無法將其自動轉換,只能進行強制轉換 int x 65 char ch char x 舉例1 int age 19 char 女 char result age int 不可以自動轉換成char 精度損失 舉例2 int a 10 int b...
Objective C資料型別 資料型別轉換
資料型別 1.objective c資料型別可以分為 基本資料型別 物件資料型別和id型別。2.基本資料型別有 int float double和char型別。3.物件型別就是類或協議所宣告的指標型別,例如 nsautoreleasepool pool 其中,nsautoreleasepool是乙個...
資料型別轉換
資料型別轉換 public class typeconvert 一 容量小的資料型別自動轉換為容量大的資料型別 資料型別按容量大小排序為 byte,short,char int long float double byte,short,char之間不會互相轉換,他們三者在計算時首先回轉換為int型別...