最近看了一下學習資料,感覺進制轉換其實還是挺有意思的,尤其是對于負數這一方面。
下面和大家分享一下,這裡隻寫了十進制到二進制的轉換,其實都是同樣的道理
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;