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

Java 中的進(jìn)制轉(zhuǎn)換與編碼機(jī)制詳解

 更新時(shí)間:2025年04月28日 15:07:20   作者:禹曦a  
在 Java 編程領(lǐng)域,進(jìn)制轉(zhuǎn)換是一項(xiàng)極為基礎(chǔ)且重要的技能,下面給大家介紹Java 中的進(jìn)制轉(zhuǎn)換與編碼機(jī)制,感興趣的朋友一起看看吧

在 Java 編程領(lǐng)域,進(jìn)制轉(zhuǎn)換是一項(xiàng)極為基礎(chǔ)且重要的技能。無(wú)論是處理底層的二進(jìn)制數(shù)據(jù),還是進(jìn)行數(shù)字的高效存儲(chǔ)和運(yùn)算,理解各種進(jìn)制及其轉(zhuǎn)換方式,以及補(bǔ)碼和反碼的概念,都是必不可少的。下面,我們將深入探討這一主題。

一、常見(jiàn)進(jìn)制概述

1. 二進(jìn)制(Binary)

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

2. 八進(jìn)制(Octal)

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

3. 十進(jìn)制(Decimal)

十進(jìn)制是我們?nèi)粘I钪凶畛S玫挠?jì)數(shù)系統(tǒng),以 10 為基數(shù),使用 0 - 9 這十個(gè)數(shù)字。在 Java 程序中,數(shù)字常量默認(rèn)采用十進(jìn)制表示。

4. 十六進(jìn)制(Hexadecimal)

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

二、Java 中的進(jìn)制轉(zhuǎn)換

1. 十進(jìn)制轉(zhuǎn)其他進(jìn)制

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

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

2. 其他進(jìn)制轉(zhuǎn)十進(jìn)制

通過(guò)Integer類的parseInt()方法,并指定基數(shù),可以將其他進(jìn)制的字符串轉(zhuǎn)換為十進(jìn)制整數(shù)。

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

3. 二進(jìn)制與八進(jìn)制、十六進(jìn)制互轉(zhuǎn)

二進(jìn)制轉(zhuǎn)八進(jìn)制

可以將二進(jìn)制數(shù)從右到左每三位一組進(jìn)行劃分,然后將每組轉(zhuǎn)換為對(duì)應(yīng)的八進(jìn)制數(shù)字。

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("二進(jìn)制 " + binary + " 轉(zhuǎn)換為八進(jìn)制: " + octal);
    }
}

八進(jìn)制轉(zhuǎn)二進(jìn)制

先將八進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),再將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。

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("八進(jìn)制 " + octal + " 轉(zhuǎn)換為二進(jìn)制: " + binary);
    }
}

二進(jìn)制轉(zhuǎn)十六進(jìn)制

將二進(jìn)制數(shù)從右到左每四位一組進(jìn)行劃分,然后將每組轉(zhuǎn)換為對(duì)應(yīng)的十六進(jìn)制數(shù)字。

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("二進(jìn)制 " + binary + " 轉(zhuǎn)換為十六進(jìn)制: " + hexadecimal);
    }
}

十六進(jìn)制轉(zhuǎn)二進(jìn)制

先將十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù),再將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。

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("十六進(jìn)制 " + hexadecimal + " 轉(zhuǎn)換為二進(jìn)制: " + binary);
    }
}

三、補(bǔ)碼和反碼

1. 反碼(One's Complement)

在 Java 中,反碼用于表示負(fù)數(shù)。對(duì)于正數(shù),其反碼與原碼相同;對(duì)于負(fù)數(shù),其反碼是在原碼的基礎(chǔ)上,符號(hào)位(最高位)不變,其余各位取反。然而,Java 本身并沒(méi)有直接獲取反碼的內(nèi)置方法,但可以通過(guò)自定義方法來(lái)實(shí)現(xiàn)。

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. 補(bǔ)碼(Two's Complement)

補(bǔ)碼也是用于表示負(fù)數(shù)的一種編碼方式,在 Java 中廣泛應(yīng)用。對(duì)于正數(shù),其補(bǔ)碼與原碼相同;對(duì)于負(fù)數(shù),其補(bǔ)碼是在反碼的基礎(chǔ)上,末位加 1。同樣,Java 沒(méi)有直接獲取補(bǔ)碼的內(nèi)置方法,但可以通過(guò)如下方式實(shí)現(xiàn)。

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 + " 的補(bǔ)碼: " + getTwosComplement(num));
    }
}

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

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

相關(guān)文章

  • SpringCloud?Eureka服務(wù)注冊(cè)中心應(yīng)用入門詳解

    SpringCloud?Eureka服務(wù)注冊(cè)中心應(yīng)用入門詳解

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

    Spring純Java配置集成kafka代碼實(shí)例

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

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

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

    Java中實(shí)現(xiàn)Excel數(shù)字與文本轉(zhuǎn)換的示例代碼

    在數(shù)據(jù)處理過(guò)程中,經(jīng)常會(huì)遇到需要將Excel單元格中的文本轉(zhuǎn)換為數(shù)字,或?qū)?shù)字轉(zhuǎn)換為文本的情況,下面就來(lái)詳細(xì)的介紹一下,感興趣的可以了解下
    2025-11-11
  • 如何使用Guava Cache做緩存

    如何使用Guava Cache做緩存

    Cache在ConcurrentHashMap的基礎(chǔ)上提供了自動(dòng)加載數(shù)據(jù)、清除數(shù)據(jù)、get-if-absend-compute的功能,本文給大家介紹如何使用Guava Cache做緩存,感興趣的朋友一起看看吧
    2023-11-11
  • Mybatis查詢Sql結(jié)果未映射到對(duì)應(yīng)得實(shí)體類上的問(wèn)題解決

    Mybatis查詢Sql結(jié)果未映射到對(duì)應(yīng)得實(shí)體類上的問(wèn)題解決

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

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

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

    Java 中Map 的用法詳解

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

    深入理解Java基礎(chǔ)中的集合框架

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

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

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

最新評(píng)論

贺兰县| 四平市| 梅河口市| 毕节市| 上思县| 濉溪县| 营口市| 肃南| 吉安市| 新宾| 罗源县| 新兴县| 湖州市| 定西市| 慈溪市| 万载县| 安仁县| 南丹县| 保山市| 吴旗县| 庆城县| 十堰市| 南丹县| 七台河市| 建始县| 江门市| 荥经县| 佛山市| 广宁县| 霍州市| 都兰县| 贵阳市| 昭觉县| 岳池县| 沈丘县| 东丰县| 新田县| 高碑店市| 高台县| 连州市| 雅安市|