手把手教你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 對應的十進制

結果:8+4+0+1=13

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的更多內容!

推薦閱讀: