手把手教你JAVA進制之間的轉換
1.前言
進制也就是進位計數制,是人為定義的帶進位的計數方法,類似於統計”正”字,對於任何一種進制,X進制,就表示每一位置上的數運算時都是逢X進一
10進制 : 逢十進一,包含元素 0~9
16進制 : 逢十六進一,包含元素 0~9 a b c d e f
2 進制 : 逢二進一,包含 0 和 1
通常情況下: 1byte = 8個二進制位
表示一個數字如果用二進制來表示的話,可以寫成: 0000 1111
把這8個位進行組合,每3位組合就形成瞭8進制
每4位組合就形成瞭16進制
2.不同進制的特點
2進制 : 逢二進一 , 包含 0和1 , 以0b開頭
8進制 : 逢八進一 , 包含 0~7 , 以0開頭
10進制 : 逢十進一 , 包含元素 0~9
16進制 : 逢十六進一 ,包含元素 0~9 a b c d e f ,以0x開頭
3.進制之間的轉換
關於二進制的一些數據
3.1 二進制轉十進制:
需求:計算二進制數據:0000 1101 對應的十進制
3.2 十進制轉二進制:
需求:求十進制數字11對應的二進制數
簡便算法: 11 先拆分成2的次冪元素組成的數, (8+2+1) 然後對應位置改成二進制 0000 1011算式計算:不斷除以2商0為止,取餘,倒著寫,11的結果:1011
7的結果0111(讀的時候先朝右,再朝上的方向讀)
3.3 二進制轉八進制:
從低次位開始,每3位為一組,產生一個八進制數字,最高位不足補0
需求:計算二進制數據110 0111對應的八進制
需求:計算八進制數據023 0653對應的二進制數據
3.4 十六進制轉二進制:
一個數字拆分成4個數字
舉例:b->11對應的二進制數1011
3.5 二進制轉十六進制:
四個一組,轉為一個數字,以0x開始
舉例: 1111->15 ,a在16進制代表的是10,依次類推,15對應的16進制數就是f
4. 代碼實現二進制與十進制互轉
java 中也提供瞭二進制和十進制的互轉方法:
4. 1 十進制轉二進制
private static void desToBin() {//10進制轉2進制 String s = Integer.toBinaryString(257); System.out.println(s);//100000001 }
4. 2 二進制轉十進制
Integer.parseInt(String s, int radix)
第一個參數:要轉成十進制數的二進制字符串
第二個參數:指定的進制
註意:這裡不支持直接使用負數的二進制碼來表示負數,而是要用正數的二進制碼添加負號來表示
private static void binToDes() { int i = Integer.parseInt("-1100101101", 2); System.out.println(i);//813 int i2 = Integer.parseInt("-1100101101", 2); System.out.println(i2);//-813 }
4. 3 練習:
需求:輸入十進制整數轉成2進制,輸入二進制整數轉成十進制
package cn.cxy.exec; import java.util.Scanner; /*完成十進制與二進制之間的轉換*/ public class Test { public static void main(String[] args) { //m1(); m2(); } private static void m2() { while (true) { System.out.print("輸入整數的二進制碼:"); String s = new Scanner(System.in).nextLine(); int a = Integer.parseInt(s, 2); System.out.println("對應的十進制數是:"+a); } } private static void m1() { while (true) { System.out.print("輸入十進制整數:"); int a = new Scanner(System.in).nextInt(); String s = Integer.toBinaryString(a); System.out.println("對應的二進制數是:"+s); } } }
5. 二進制數據在Java代碼中的寫法
在Java語法中:二進制字面值可以使用 0b 前綴的整數直接表示:
int a = 0b11001;
byte b = 0b1111111;
// 0b前綴語法不允許直接寫負數的二進制碼,這樣寫實際表示的是正數128
byte c = 0b10000000; //此處錯誤
// 要寫byte的最小值-128,需要寫 128 的二進制碼,並加負號
byte d = -0b10000000;
總結
本篇文章就到這裡瞭,希望能給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- 新手初學Java流程控制
- Java中BufferedReader與Scanner讀入的區別詳解
- Java Scanner的使用和hasNextXXX()的用法說明
- java編程學習輸入輸出詳解看完快速上手
- Java如何實現通過鍵盤輸入一個數組