欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java實(shí)現(xiàn)十進(jìn)制與二進(jìn)制互轉(zhuǎn)的示例詳解

 更新時(shí)間:2022年11月22日 17:12:12   作者:三省同學(xué)  
這篇文章主要為大家詳細(xì)介紹了Java如何實(shí)現(xiàn)十進(jìn)制與二進(jìn)制的互轉(zhuǎn),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定幫助,需要的可以參考一下

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

正整數(shù)轉(zhuǎn)二進(jìn)制

除2取余,逆序排列,高位補(bǔ)零。

示例:

十進(jìn)制255 = 二進(jìn)制1111 1111

計(jì)算過程:

255/2=127=====余1
127/2=63======余1
63/2=31=======余1
31/2=15=======余1
15/2=7========余1
7/2=3=========余1
3/2=1=========余1
1/2=0=========余1

小數(shù)轉(zhuǎn)換成二進(jìn)制

乘2取整,順序排列。

十進(jìn)制0.625 = 二進(jìn)制0.101

計(jì)算過程:

0.625*2=1.25======取出整數(shù)部分1
0.25*2=0.5========取出整數(shù)部分0
0.5*2=1==========取出整數(shù)部分1

代碼實(shí)現(xiàn)

Java類實(shí)現(xiàn):

System.out.println(new BigInteger("255", 10).toString(2));

自定義實(shí)現(xiàn):

public static void main(String[] args) {
    System.out.print("輸入一個(gè)十進(jìn)制數(shù):");
    Scanner s = new Scanner(System.in);
    int num = s.nextInt();
    String result = "";
    for (int i = num; i > 0; i /= 2) {
        result = i % 2 + result;
    }
    System.out.println(result);
}

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

小數(shù)點(diǎn)前或者整數(shù)要從右到左用二進(jìn)制的每個(gè)數(shù)去乘以2的相應(yīng)次方并遞增,小數(shù)點(diǎn)后則是從左往右乘以二的相應(yīng)負(fù)次方并遞減。

示例:

二進(jìn)制數(shù)1101.01轉(zhuǎn)化成十進(jìn)制

計(jì)算過程:

1101.01(2)=1*20+0*21+1*22+1*23 +0*2-1+1*2-2=1+0+4+8+0+0.25=13.25(10)

代碼實(shí)現(xiàn)

Java類實(shí)現(xiàn):

Integer.parseInt("1111",2);

自定義實(shí)現(xiàn):

public static void main(String[] args) {
    System.out.print("輸入一個(gè)二進(jìn)制數(shù):");
    Scanner scanner = new Scanner(System.in);
    int binaryNumber = scanner.nextInt();
    int decimal = 0;
    int p = 0;

    while (true) {
        if (binaryNumber == 0) {
            break;
        } else {
            int temp = binaryNumber % 10;
            decimal += temp * Math.pow(2, p);
            binaryNumber = binaryNumber / 10;
            p++;
        }
    }
    System.out.println(decimal);
}

BigInteger

概念

在Java中,由CPU原生提供的整型最大范圍是64位long型整數(shù)。使用long型整數(shù)可以直接通過CPU指令進(jìn)行計(jì)算,速度非??臁?/p>

如果我們使用的整數(shù)范圍超過了long型怎么辦?

這里就引入我們要了解的主角BigInteger。

java.math.BigInteger就是用來表示任意大小的整數(shù)。BigInteger內(nèi)部用一個(gè)int[]數(shù)組來模擬一個(gè)非常大的整數(shù):

運(yùn)用

如果不借助BigInteger類,當(dāng)你需要運(yùn)算9999999999999999的6次方,你敢想嗎?或者還又哪些辦法

BigInteger bi = new BigInteger("9999999999999999");
System.out.println(bi.pow(6));

結(jié)果:

999999999999999400000000000000149999999999999980000000000000001499999999999999940000000000000001

如果在瘋狂點(diǎn)?結(jié)果是多少?

BigInteger bi = new BigInteger("999999999999999999");
System.out.println(bi.pow(999999999));

BigInteger和Integer、Long一樣,也是不可變類,并且也繼承自Number類。因?yàn)镹umber定義了轉(zhuǎn)換為基本類型的幾個(gè)方法:

  • 轉(zhuǎn)換為byte:byteValue()
  • 轉(zhuǎn)換為short:shortValue()
  • 轉(zhuǎn)換為int:intValue()
  • 轉(zhuǎn)換為long:longValue()
  • 轉(zhuǎn)換為float:floatValue()
  • 轉(zhuǎn)換為double:doubleValue()

通過上述方法,可以把BigInteger轉(zhuǎn)換成基本類型。如果BigInteger表示的范圍超過了基本類型的范圍,轉(zhuǎn)換時(shí)將丟失高位信息,即結(jié)果不一定是準(zhǔn)確的。如果需要準(zhǔn)確地轉(zhuǎn)換成基本類型,可以使用intValueExact()、longValueExact()等方法,在轉(zhuǎn)換時(shí)如果超出范圍,將直接拋出ArithmeticException異常。 

到此這篇關(guān)于Java實(shí)現(xiàn)十進(jìn)制與二進(jìn)制互轉(zhuǎn)的示例詳解的文章就介紹到這了,更多相關(guān)Java十進(jìn)制二進(jìn)制互轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入剖析Java編程中的序列化

    深入剖析Java編程中的序列化

    這篇文章主要介紹了深入剖析Java編程中的序列化,文中談到了序列化時(shí)對(duì)象的繼承等各種問題,案例詳盡,強(qiáng)烈推薦!需要的朋友可以參考下
    2015-07-07
  • Java設(shè)計(jì)模式之工廠方法模式實(shí)例簡(jiǎn)析

    Java設(shè)計(jì)模式之工廠方法模式實(shí)例簡(jiǎn)析

    這篇文章主要介紹了Java設(shè)計(jì)模式之工廠方法模式,較為詳細(xì)的分析了Java工廠模式的功能、定義并給出了實(shí)例代碼加以總結(jié)分析,需要的朋友可以參考下
    2015-11-11
  • Java實(shí)現(xiàn)在線聊天室(層層遞進(jìn))

    Java實(shí)現(xiàn)在線聊天室(層層遞進(jìn))

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)在線聊天室,層層遞進(jìn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 解決IDEA誤刪out目錄下的文件導(dǎo)致404無法訪問的問題

    解決IDEA誤刪out目錄下的文件導(dǎo)致404無法訪問的問題

    這篇文章主要介紹了解決IDEA誤刪out目錄下的文件導(dǎo)致404無法訪問的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • mybatis中的延遲加載類型及設(shè)定詳解

    mybatis中的延遲加載類型及設(shè)定詳解

    這篇文章主要介紹了mybatis中的延遲加載類型及設(shè)定詳解,MyBatis中的延遲加載,也稱為懶加載,是指在進(jìn)行關(guān)聯(lián)查詢時(shí),按照設(shè)置延遲規(guī)則推遲對(duì)關(guān)聯(lián)對(duì)象的select查詢,延遲加載可以有效的減少數(shù)據(jù)庫壓力,需要的朋友可以參考下
    2023-10-10
  • 實(shí)例解析Java設(shè)計(jì)模式編程中的適配器模式使用

    實(shí)例解析Java設(shè)計(jì)模式編程中的適配器模式使用

    適配器模式的主要作用是在新接口和老接口之間進(jìn)行適配,通過將一個(gè)類的接口轉(zhuǎn)換成客戶期望的另一個(gè)接口,讓原本不兼容的接口可以合作無間,本文以實(shí)例解析Java設(shè)計(jì)模式編程中的適配器模式使用,需要的朋友可以參考下
    2016-05-05
  • 基于Eclipse中SVN圖標(biāo)不顯示的解決方法

    基于Eclipse中SVN圖標(biāo)不顯示的解決方法

    本篇文章是對(duì)Eclipse中SVN圖標(biāo)不顯示的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • 迅速學(xué)會(huì)@ConfigurationProperties的使用操作

    迅速學(xué)會(huì)@ConfigurationProperties的使用操作

    這篇文章主要介紹了迅速學(xué)會(huì)@ConfigurationProperties的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring動(dòng)態(tài)監(jiān)聽Nacos配置中心key值變更的實(shí)現(xiàn)方法

    Spring動(dòng)態(tài)監(jiān)聽Nacos配置中心key值變更的實(shí)現(xiàn)方法

    Nacos本身提供支持監(jiān)聽配置變更的操作,但在使用起來,個(gè)人感覺不是很友好,無法精確到某個(gè)key的變更監(jiān)聽,所以本文小編給大家介紹了Spring動(dòng)態(tài)監(jiān)聽Nacos配置中心key值變更的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2024-08-08
  • Springboot3整合Mybatis-plus3.5.3報(bào)錯(cuò)問題解決

    Springboot3整合Mybatis-plus3.5.3報(bào)錯(cuò)問題解決

    在日常學(xué)習(xí)springboot3相關(guān)的代碼時(shí),在使用 SpringBoot3 整合 MyBatisplus 時(shí)出現(xiàn)了一些問題,花了不少時(shí)間處理,這篇文章主要介紹了Springboot3整合Mybatis-plus3.5.3報(bào)錯(cuò)問題解決,需要的朋友可以參考下
    2023-11-11

最新評(píng)論