【怎么讓負數轉正數 java正負數轉換】
文章插圖

文章插圖
Java基本數據類型的轉換
今天我們來討論一下java中6種基本數據類型的轉換 。它們分別是:byte,short,int,long,double,float 。
記住一點,數據范圍小的類型轉換成范圍大的類型,是不會出現問題的 。但是如果是范圍大的數據類型往范圍小的類型去轉換,就可能會出現問題了 。我將6種類型的互轉分成30種類型,下面我們將這30種類型都實踐一下 。每種類型的轉換,我這里分4種情況,正數的轉換,負數的轉換,臨界值(最大值和最小值)的轉換,邊界外的轉換,邊界內的轉換 。
byte -> short
// 正數byte a = 1;// 負數byte b = -1;// 最大值byte c = 127;// 最小值byte d = -128;System.out.println((short)a);// 1System.out.println((short)b); // -1System.out.println((short)c); // 127System.out.println((short)d); // -128System.out.println((short)(c+a)); // 128System.out.println((short)(d+b)); // -129我們首先看上面的代碼塊 。發現這五種情況的轉換,結果都是正確的 。這是因為short類型能夠表示的范圍大于byte類型,所以是不會出現問題 。short -> byte
short a = 1;short b = -1;short c = Short.MAX_VALUE; // 32767short d = Short.MIN_VALUE; // -32768short f = 128;short g = -129;System.out.println((byte)a);// 1System.out.println((byte)b); // -1System.out.println((byte)c); // -1System.out.println((byte)d); // 0System.out.println((byte)(c+a)); // 0System.out.println((byte)(d+b)); // -1System.out.println((byte)f);// -128System.out.println((byte)g); // 127我們會發現只有前面兩個輸出是對的 其他都是錯誤的 。下面我們就來分析一下 為什么會出現這樣的情況 。首先來看c(32767)在計算機是怎么存儲的 。我們都知道計算機存儲數據都是按二進制來存儲的,因此將c的值轉換成二進制就是如圖下:
截取的時候,計算機是不知道哪一位是用來表示符號位的,因此,截取之后有可能符號位跟截取之前不一致 。
截取之后符號位是1 。說明截取之后,該數變成了一個負數 。在以前的文章里面說過,對于負數,計算機是采用補碼的形式進行存儲的 。那么我們就來推算一下該種數據對應的原碼是多少:
下面我們來看一下d(-32768)為什么轉成short之后是0?首先我們來看一下計算機是怎么存儲這個數的 。
-32768轉換成二進制是:
- 電腦一鍵還原 聯想電腦一鍵還原系統怎么操作
- 帶狀皰疹的后遺癥神經痛怎么治療
- 雞胸肉給寶寶怎么做
- excel文檔怎么做下拉選項 電腦excel文檔怎么做
- 打印機端口怎么刪除不掉 打印機端口刪不掉怎么辦
- 番薯圓子怎么做
- 吃香蕉喝酸奶會怎么樣
- 女生表白失敗后怎么辦-試試四種處理方法
- surface 模式切換 surface界面怎么切換
- 十六進制編輯器有什么用 16進制編輯器怎么用
