Java中實現十進位數轉換為二進位的幾種辦法__Java

來源:互聯網
上載者:User
Java中實現十進位數轉換為二進位

第一種:除基倒取餘法

這是最符合我們平時的數學邏輯思維的,即輸入一個十進位數n,每次用n除以2,把餘數記下來,再用商去除以2...依次迴圈,直到商為0結束,把餘數倒著依次排列,就構成了轉換後的位元。

那麼,在實際實現中,可以用int的一個數來儲存最後的二進位,每次求餘後把餘數儲存在int型數的低位,依次遞增。

 1   public void binaryToDecimal(int n){ 2       int t = 0;  //用來記錄位元 3       int bin = 0; //用來記錄最後的位元 4       int r = 0;  //用來儲存餘數 5       while(n != 0){ 6           r = n % 2; 7           n = n / 2; 8           bin = r * Math().pow(10,t); 9           t++; 10      }11          System.out.println(bin);12  }

 

但是int型最大隻能表示2^31-1 的正數,所以,儲存的位元位元有限;我們都知道,int在java中的儲存範圍是32位,則可以使用字串的拼接(+)來實現,代碼如下: 按 Ctrl+C 複製代碼 public void binaryToDecimal(int n){ String str = ""; while(n!=0){ str = n%2+str; n = n/2; } System.out.println(str); } 按 Ctrl+C 複製代碼

 

第二種:利用“移位”操作實現

我們可以直接利用移位操作對一個十進位數進行移位操作,即:將最高位的數移至最低位(移31位),除過最低位其餘位置清零,使用& 操作,可以使用和1相與(&),由於1在記憶體中除過最低位是1,其餘31位都是零,然後把這個數按十進位輸出;再移次高位,做相同的操作,直到最後一位 ,代碼如下。可以說,這是我到目前為止見到的最簡單的實現方式了。

1 public void binaryToDecimal(int n){2      for(int i = 31;i >= 0; i--)3          System.out.print(n >>> i & 1);4 }

 

說明:由於電腦中儲存的都是數的補碼,正數的原碼、反碼、補碼都是相同的;而負數的原碼、反碼、補碼是不一樣的,補碼=原碼取反+1(符號位不變)。所以,負數是按照它的補碼輸出的。

>>>為邏輯移位符,向右移n位,高位補0
>> 算數移位符,也是向右移n位,不同的是:正數高位補0,負數高位補1
<< 移位符,向左移n位,低位補0

第三種:調用API函數

這是處理問題更符合物件導向的一種方式:

1 public void function1(int n){2      String result = Integer.toBinaryString(n);3      //int r = Integer.parseInt(result);4      //System.out.println(r);5      System.out.println(result);6  }

 

小小的建議:  此代碼中,可以直接用字串輸出;也可以利用Interger.parseInt()轉化為int,但不建議這種方式,當為負數時,int型的表示不了32的一個整數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.