最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 中的進制轉換與編碼機制詳解

 更新時間:2025年04月28日 15:07:20   作者:禹曦a  
在 Java 編程領域,進制轉換是一項極為基礎且重要的技能,下面給大家介紹Java 中的進制轉換與編碼機制,感興趣的朋友一起看看吧

在 Java 編程領域,進制轉換是一項極為基礎且重要的技能。無論是處理底層的二進制數據,還是進行數字的高效存儲和運算,理解各種進制及其轉換方式,以及補碼和反碼的概念,都是必不可少的。下面,我們將深入探討這一主題。

一、常見進制概述

1. 二進制(Binary)

二進制是一種以 2 為基數的計數系統(tǒng),僅使用 0 和 1 兩個數字。在計算機底層,數據的存儲和傳輸都是以二進制的形式進行的,因為計算機的硬件電路很容易實現兩種狀態(tài)的表示,如開與關、高電平與低電平。例如,二進制數 101 表示為 1×22+0×21+1×20=5。

2. 八進制(Octal)

八進制以 8 為基數,使用 0 - 7 這八個數字。八進制在早期的計算機系統(tǒng)中較為常用,它可以方便地與二進制進行轉換,簡化二進制數據的表示。例如,八進制數 37 表示為 3×81+7×80=31。

3. 十進制(Decimal)

十進制是我們日常生活中最常用的計數系統(tǒng),以 10 為基數,使用 0 - 9 這十個數字。在 Java 程序中,數字常量默認采用十進制表示。

4. 十六進制(Hexadecimal)

十六進制以 16 為基數,使用 0 - 9 和 A - F(或 a - f)表示 0 - 15。在計算機編程中,十六進制常用于表示內存地址、顏色值等,與二進制之間的轉換也很方便。例如,十六進制數 A3 表示為 10×161+3×160=163。

二、Java 中的進制轉換

1. 十進制轉其他進制

在 Java 中,可以使用Integer類的靜態(tài)方法toBinaryString()toOctalString()toHexString()將十進制整數轉換為二進制、八進制和十六進制字符串。

public class DecimalToOther {
    public static void main(String[] args) {
        int decimal = 25;
        System.out.println("十進制 " + decimal + " 轉換為二進制: " + Integer.toBinaryString(decimal));
        System.out.println("十進制 " + decimal + " 轉換為八進制: " + Integer.toOctalString(decimal));
        System.out.println("十進制 " + decimal + " 轉換為十六進制: " + Integer.toHexString(decimal));
    }
}

2. 其他進制轉十進制

通過Integer類的parseInt()方法,并指定基數,可以將其他進制的字符串轉換為十進制整數。

public class OtherToDecimal {
    public static void main(String[] args) {
        String binary = "11001";
        String octal = "31";
        String hexadecimal = "19";
        System.out.println("二進制 " + binary + " 轉換為十進制: " + Integer.parseInt(binary, 2));
        System.out.println("八進制 " + octal + " 轉換為十進制: " + Integer.parseInt(octal, 8));
        System.out.println("十六進制 " + hexadecimal + " 轉換為十進制: " + Integer.parseInt(hexadecimal, 16));
    }
}

3. 二進制與八進制、十六進制互轉

二進制轉八進制

可以將二進制數從右到左每三位一組進行劃分,然后將每組轉換為對應的八進制數字。

public class BinaryToOctal {
    public static void main(String[] args) {
        String binary = "11001";
        int decimal = Integer.parseInt(binary, 2);
        String octal = Integer.toOctalString(decimal);
        System.out.println("二進制 " + binary + " 轉換為八進制: " + octal);
    }
}

八進制轉二進制

先將八進制數轉換為十進制數,再將十進制數轉換為二進制數。

public class OctalToBinary {
    public static void main(String[] args) {
        String octal = "31";
        int decimal = Integer.parseInt(octal, 8);
        String binary = Integer.toBinaryString(decimal);
        System.out.println("八進制 " + octal + " 轉換為二進制: " + binary);
    }
}

二進制轉十六進制

將二進制數從右到左每四位一組進行劃分,然后將每組轉換為對應的十六進制數字。

public class BinaryToHexadecimal {
    public static void main(String[] args) {
        String binary = "11001";
        int decimal = Integer.parseInt(binary, 2);
        String hexadecimal = Integer.toHexString(decimal);
        System.out.println("二進制 " + binary + " 轉換為十六進制: " + hexadecimal);
    }
}

十六進制轉二進制

先將十六進制數轉換為十進制數,再將十進制數轉換為二進制數。

public class HexadecimalToBinary {
    public static void main(String[] args) {
        String hexadecimal = "19";
        int decimal = Integer.parseInt(hexadecimal, 16);
        String binary = Integer.toBinaryString(decimal);
        System.out.println("十六進制 " + hexadecimal + " 轉換為二進制: " + binary);
    }
}

三、補碼和反碼

1. 反碼(One's Complement)

在 Java 中,反碼用于表示負數。對于正數,其反碼與原碼相同;對于負數,其反碼是在原碼的基礎上,符號位(最高位)不變,其余各位取反。然而,Java 本身并沒有直接獲取反碼的內置方法,但可以通過自定義方法來實現。

public class OnesComplement {
    public static String getOnesComplement(int number) {
        if (number >= 0) {
            return Integer.toBinaryString(number);
        } else {
            String binary = Integer.toBinaryString(Math.abs(number));
            StringBuilder onesComplement = new StringBuilder();
            for (char bit : binary.toCharArray()) {
                onesComplement.append(bit == '0'? '1' : '0');
            }
            return "1" + onesComplement.toString();
        }
    }
    public static void main(String[] args) {
        int num = -5;
        System.out.println(num + " 的反碼: " + getOnesComplement(num));
    }
}

2. 補碼(Two's Complement)

補碼也是用于表示負數的一種編碼方式,在 Java 中廣泛應用。對于正數,其補碼與原碼相同;對于負數,其補碼是在反碼的基礎上,末位加 1。同樣,Java 沒有直接獲取補碼的內置方法,但可以通過如下方式實現。

public class TwosComplement {
    public static String getOnesComplement(int number) {
        if (number >= 0) {
            return Integer.toBinaryString(number);
        } else {
            String binary = Integer.toBinaryString(Math.abs(number));
            StringBuilder onesComplement = new StringBuilder();
            for (char bit : binary.toCharArray()) {
                onesComplement.append(bit == '0'? '1' : '0');
            }
            return "1" + onesComplement.toString();
        }
    }
    public static String getTwosComplement(int number) {
        if (number >= 0) {
            return Integer.toBinaryString(number);
        } else {
            String onesComplement = getOnesComplement(number);
            StringBuilder twosComplement = new StringBuilder(onesComplement);
            for (int i = twosComplement.length() - 1; i >= 0; i--) {
                if (twosComplement.charAt(i) == '0') {
                    twosComplement.setCharAt(i, '1');
                    return twosComplement.toString();
                } else {
                    twosComplement.setCharAt(i, '0');
                }
            }
            return "1" + twosComplement.toString();
        }
    }
    public static void main(String[] args) {
        int num = -5;
        System.out.println(num + " 的補碼: " + getTwosComplement(num));
    }
}

上述文章添加了更多進制轉換的代碼示例,涵蓋了二進制與八進制、十六進制之間的相互轉換,同時在補碼和反碼部分增加了main方法用于測試。希望這符合你的需求。

到此這篇關于Java 中的進制轉換與編碼機制的文章就介紹到這了,更多相關Java進制轉換與編碼機制內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringCloud?Eureka服務注冊中心應用入門詳解

    SpringCloud?Eureka服務注冊中心應用入門詳解

    這篇文章主要介紹了Spring?Cloud?Eureka服務注冊中心入門流程分析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Spring純Java配置集成kafka代碼實例

    Spring純Java配置集成kafka代碼實例

    這篇文章主要介紹了Spring純Java配置集成kafka代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • 源碼分析Nacos如何動態(tài)刷新配置

    源碼分析Nacos如何動態(tài)刷新配置

    從架構圖上可以知道,Nacos提供了兩種服務,一種是用于服務注冊、發(fā)現的Naming?Service,一種是用于配置中心、動態(tài)配置的Config?Service,本文將從源碼角度分析Nacos如何動態(tài)刷新配置,需要的可以了解下
    2025-08-08
  • Java中實現Excel數字與文本轉換的示例代碼

    Java中實現Excel數字與文本轉換的示例代碼

    在數據處理過程中,經常會遇到需要將Excel單元格中的文本轉換為數字,或將數字轉換為文本的情況,下面就來詳細的介紹一下,感興趣的可以了解下
    2025-11-11
  • 如何使用Guava Cache做緩存

    如何使用Guava Cache做緩存

    Cache在ConcurrentHashMap的基礎上提供了自動加載數據、清除數據、get-if-absend-compute的功能,本文給大家介紹如何使用Guava Cache做緩存,感興趣的朋友一起看看吧
    2023-11-11
  • Mybatis查詢Sql結果未映射到對應得實體類上的問題解決

    Mybatis查詢Sql結果未映射到對應得實體類上的問題解決

    使用mybatis查詢表數據得時候,發(fā)現對應得實體類字段好多都是null,本文主要介紹了Mybatis查詢Sql結果未映射到對應得實體類上的問題解決,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • SpringBoot集成MyBatis實現SQL攔截器的實戰(zhàn)指南

    SpringBoot集成MyBatis實現SQL攔截器的實戰(zhàn)指南

    這篇文章主要為大家詳細介紹了SpringBoot集成MyBatis實現SQL攔截器的相關知識,文中的示例代碼講解詳細,有需要的小伙伴可以參考一下
    2025-07-07
  • Java 中Map 的用法詳解

    Java 中Map 的用法詳解

    本文主要介紹java 中的Map 接口, 這里對Map 接口下的幾個類做了詳細介紹,希望對學習java 編程的小伙伴有所幫助
    2016-07-07
  • 深入理解Java基礎中的集合框架

    深入理解Java基礎中的集合框架

    Java集合框架(Java Collections Framework, JCF)也稱容器,這里可以類比 C++中的 STL,在這里主要對如下部分進行源碼分析,及在面試中常見的問題,例如,在阿里面試常問到的 HashMap和ConcurrentHashMap原理等等,深入源碼分析是面試中必備的技能
    2023-08-08
  • java和javascript中過濾掉img形式的字符串不顯示圖片的方法

    java和javascript中過濾掉img形式的字符串不顯示圖片的方法

    這篇文章主要介紹了java和javascript中過濾掉img形式的字符串不顯示圖片的方法,以實例形式分別講述了采用java和javascript實現過濾掉img形式字符串的技巧,需要的朋友可以參考下
    2015-02-02

最新評論

哈尔滨市| 金川县| 葵青区| 黄浦区| 鹤岗市| 宿迁市| 杭锦旗| 囊谦县| 双流县| 景德镇市| 石首市| 东阳市| 游戏| 西乡县| 化隆| 边坝县| 桃源县| 祁阳县| 盐亭县| 白城市| 宜川县| 汉阴县| 奉节县| 通辽市| 河南省| 商南县| 启东市| 简阳市| 大港区| 永丰县| 左贡县| 额敏县| 朝阳县| 开封县| 玉林市| 新干县| 大悟县| 蒲城县| 周宁县| 应城市| 临高县|