天天看點

java進制轉換(無視正負數的差别)

最近看了一下學習資料,感覺進制轉換其實還是挺有意思的,尤其是對于負數這一方面。

下面和大家分享一下,這裡隻寫了十進制到二進制的轉換,其實都是同樣的道理

java進制轉換(無視正負數的差别)
java進制轉換(無視正負數的差别)

1 public class Test1 {
 2 
 3     public static void main(String[] args) {
 4         toBin(-4);
 5         toBin(4);
 6     }
 7     /*
 8      * 函數名:toBin
 9      * 功能描述:用來将正數或者負數轉換為二進制數
10      * 建立人:zx
11      * 傳回值:void
12      * */
13     public static void toBin(int num){
14         //定義字元串,用來存放計算出來的二進制資料
15         StringBuffer sb=new StringBuffer();
16         while(num!=0){
17             //向字元串中添加計算出來的二進制數
18             //注:這裡用到了&運算,不明白的讀者,可以在網上查找一下
19             sb.append(num&1);
20             //對num進行無符号位運算,類似于除2運算,具體的差別還需要讀者自己查找
21             num=num >>> 1;
22         }
23         //将字元串反序輸出,
24         System.out.println(sb.reverse());
25     }
26 
27 }      

View Code

如果想寫8進制的轉換,可以将while循環裡的兩條語句改為:

sb.append(num&7);num=num >>> 3;

如果想寫16進制的轉換,可以将while循環裡的兩條語句改為:

sb.append(num&15);num=num >>> 4;