java 進制轉換 十進制轉二,八,十六進制

十進制轉其他進制

因為在java中位運算符是直接對數值的二進制數進行操作的 并且 寫的是二進制數在輸出和操作時是以十進制數的形式;
所以十進制轉二,八,十六進制;就已經實現了二進制,八進制,十進制,十六進制的相互轉換。

1)十進制轉其他進制&&其他進制的互相轉換:使用這三種方式
2)其他進制轉十進制:直接使用int、long即可

在這里插入圖片描述

使用java API實現

十進制轉二進制:Integer.toBinaryString();
十進制轉八進制:Integer.toOctalString();
十進制轉十六進制:Integer.tohexString();

class BaseSystemDemo1 {public static void main(String[] args) {//十進制轉其他進制//1.使用java API實現//十進制轉二進制int num=80;String BinStr=Integer.toBinaryString(num);//十進制轉八進制String OctStr=Integer.toOctalString(num);//十進制轉十六進制String HexStr=Integer.toHexString(num);System.out.println(BinStr);//1010000System.out.println(OctStr);//120System.out.println(HexStr);//50}
}

使用除基倒取余法實現

十進制轉二進制

一個十進制數n,每次用n除以2,把余數記下來,再用商去除以2…依次循環,直到商為0結束,把余數倒著依次排列,就構成了轉換后的二進制數

代碼1:使用int類型

       //十進制轉二進制//1.方法1:除基倒取余法//1_1:使用int類型/*一個十進制數n,每次用n除以2,把余數記下來,再用商去除以2...依次循環,直到商為0結束,把余數倒著依次排列,就構成了轉換后的二進制數*/int num=80;int r=0;//余數int t=0;//位數int bin=0;//最后的二進制數while(num!=0){r=num%2;num/=2;bin+=r*(int)(Math.pow(10,t));//每次求余后把余數存儲在int型數的低位,依次遞增t++;//位數加1}System.out.println(bin);//1010000

代碼2:使用String類型

 //1_2:使用String類型int number=80;String strBin="";while(number!=0){// 0    0       ""// 00   0        0//...//1000   1      0000//number%2在strBin的前面,就是每次把新的余數放在字符串的首部,即實現了逆序余數strBin=number%2+strBin;number/=2;}System.out.println(strBin);//1010000

十進制轉八進制

代碼1:使用int類型

		//十進制轉八進制//方法1:除基倒余法//1_1:使用int類型int num=80;int r=0;//余數int t=0;//位數int oct=0;//最后的八進制數while(num!=0){r=num%8;num/=8;oct+=r*(int)(Math.pow(10,t));t++;}System.out.println(oct);//120

代碼2:使用String類型

//1-2:使用String類型int num1=80;String str="";while(num1!=0){str=num1%8+str;num1/=8;}System.out.println(str);//120

十進制轉十六進制

因為十六進制是0-9,A-F,所以只能使用String存儲
代碼:

       //十進制轉十六進制//方法1:除基倒余法//1:使用String類型int num2=842;String hexStr="";int n=0;while(num2!=0){n=num2%16;   //注意加上"",防止進行數值運算hexStr=((n>9)?(char)(n-10+'A')+"":n+"")+hexStr;num2/=16;}System.out.println(hexStr);//34A

使用位運算符&(按位與)與>>(右移)實現

十進制轉二進制

n>>1 :無符號右移>>>,獲取n的二進制的下一位
n&1:按位與&,剛好能夠得到n的二進制的最低位;
再逐一輸出即可
假設一共32位,減1(最后的一位不需要移動,本身就有1位數在最低位,所以-1),再每次移動減少1位

代碼1:直接輸出

        //方法2:位運算>>>與&//2_1:直接輸出int n=80;//從最高位開始移動,直到最低位for(int i = 31;i >= 0; i--){/*n>>1 :無符號右移>>>,獲取n的二進制的下一位n&1:按位與&,剛好能夠得到n的二進制的最低位再逐一輸出即可*/System.out.print(n >>> i & 1);//00000000000000000000000001010000}System.out.println();

代碼2:使用String類型

        //2_2:使用StringString str="";int m=80;for(int i=31;i>=0;i--){str+=(m>>>i&1)+"";}System.out.println(str);//00000000000000000000000001010000

十進制轉八進制

假設一共32位,減2(最后的三位不需要移動,但每次移動3位,最后會需要補充1位數,所以只需要-2),再每次移動減少3位

代碼1:直接輸出

 //方法2:使用位運算符>>與&//2-1:直接輸出int num2=80;//假設一共8位,減2(最后的三位不需要移動,但每次移動3位,最后會需要補充1位數,所以只需要-2),再每次移動減少3位//000 000 000for(int i=6;i>=0;i-=3){System.out.print((num2>>>i)&7);//120}System.out.println();//假設一共32位,減2(最后的三位不需要移動,但每次移動3位,最后會需要補充1位數,所以只需要-2),再每次移動減少3位for(int i=30;i>=0;i-=3){System.out.print((num2>>>i)&7);//00000000120}System.out.println();

代碼2:使用String類型

  //2-2:使用String類型int num3=80;String octStr="";for(int i=30;i>=0;i-=3){octStr+=(num2>>>i)&7;}System.out.println(octStr);//00000000120

十進制轉十六進制的演化過程1

1.使用&15得到num的最后四位二進制數,每四位二進制數為1位十六進制數
2.因為輸出時,都是以十進制來輸出的,所以只需要把num3的十進制大于9的轉換為A-F;并且因為輸出的可能是數值也可能是字符,使用字符串類型
3.num3>>4獲得倒數第二個四位二進制數;并重復上述操作
4.連接字符串

代碼1

class BaseSystemDemo2 {public static void main(String[] args) {//十進制轉其他進制//2.使用位運算符&(按位與)與>>(右移)實現//原理:位運算符是直接對數值的二進制形式進行操作的//n&1 n&7 n&15:按位與&,剛好能夠得到n的二進制的最后的位數//n>>1 n>>3 n>>4:右移>>,獲取n的二進制的下一段//十進制轉十六進制//1)使用&15得到num的最后四位二進制數,每四位二進制數為1位十六進制數int num=80;int num3=num&15;//2)因為輸出時,都是以十進制來輸出的,所以只需要把num3的十進制大于9的轉換為A-F//因為輸出的可能是數值也可能是字符,使用字符串類型String HexStr1=(num3>9)?(char)(num3-10+'A')+"":num3+"";//3)num3>>4獲得倒數第二個四位二進制數int num4=(num>>4)&15;String HexStr2=(num4>9)?(char)(num4-10+'A')+"":num4+"";//4)連接兩個字符串String HexStr=HexStr2+HexStr1;System.out.println(HexStr);//50}
}

十進制轉十六進制的演化過程2

假設一共32位,減4(最后的四位不需要移動,所以-4),再每次移動4位
使用三元運算符輸出其中大于9的字符:(n1>9)?(char)(n1-10+‘A’)+"":n1+""

代碼1:直接輸出

//方法2:使用位運算符>>>和&//2-1:直接輸出int num3=842;int n1=0;//假設一共8位,減4(最后的四位不需要移動,所以-4),再每次移動4位for(int i=4;i>=0;i-=4){n1=(num3>>>i)&15;System.out.print((n1>9)?(char)(n1-10+'A')+"":n1+"");//4A}System.out.println();//假設一共32位,減4(最后的四位不需要移動,所以-4),再每次移動4位int n2=0;for(int i=28;i>=0;i-=4){n2=(num3>>>i)&15;System.out.print((n2>9)?(char)(n2-10+'A')+"":n2+"");//0000034A			}System.out.println();

代碼2:使用String

//2-2:使用String類型int num4=842;String hexStr1="";int n3=0;for(int i=28;i>=0;i-=4){n3=(num4>>>i)&15;hexStr1+=(n3>9)?(char)(n3-10+'A')+"":n3+"";}System.out.println(hexStr1);//0000034A

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/446337.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/446337.shtml
英文地址,請注明出處:http://en.pswp.cn/news/446337.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

密碼學專題 密鑰生成|分組加密的模式 ECB|CBC|CFB|OFB

密鑰生成 如何安全地生成密鑰。即如何生成可信任的密鑰,保證用戶得到的密鑰是安全的, 生成密鑰的機器或程序是可信的。如何生成安全的密鑰。安全的密鑰沒有統一準確的定義,但一般來說是指密鑰抗 猜測和抗窮舉等針對密鑰攻擊的能力。涉及密鑰…

java 狗的年齡轉換為對應的人的年齡

題目 我家的狗5歲了,5歲的狗相當于人類多大呢? 其實,狗的前兩年每 一年相當于人類的10.5歲,之后每增加一年就增加四歲。 那么5歲的狗相當于人類多少年齡呢?應該是:10.5 10.5 4 4 4 33歲。 編寫一個程序…

excel高級篩選怎么用_Excel表格中高級篩選的優點以及常用方法介紹

在Excel表格中普通的數據篩選只能滿足一些基本的篩選要求,這篇文章為朋友們總結一下高級篩選的優點以及常用方法。一.與普通篩選相比,高級篩選可以使用比較運算符。在下圖中要篩選性別為男并且評分大于90的人員。如果使用普通篩選需要一個個的勾選成績大…

STL源碼剖析 第二次溫習 細節審核

臨時對象的產生 臨時對象也叫做 無名對象,(使用pass by value的方式會引發copy的操作,于是產生一個臨時的對象),造成效率的負擔,但是可以可以制造一些臨時對象在型別的后面 直接加上() 并可以指定初始數值,相當于調用…

java 彩票游戲

題目 Math.random()獲取隨機數 Math.random()返回的是一個[0.0,1.0)的doule類型的數 所以,獲取0-9:(int)Math.random()*10–> [0,10) 獲取0-10:(int)Math.random()*101–> [0,11) 獲取10-99:(int)Math.random()9010–> […

python異常處理_Python入門 斷言與異常處理

一、斷言斷言,可以理解為判斷是否斷開的預言。assert 表達式 , 描述表達式為我們的預期結果,當表達式的結果為False時,拋出 AssertionError 異常,如無異常捕獲程序遇到異常時直接結束運行。反之,表達式結果為True 程序…

C++ 左值和右值 的學習

引用是一個變量,它引用其他變量的內存位置 int x 34; int &lRef x; 標識符 IRef 就是一個引用。在聲明中,引用是通過 & 來指示的,出現在類型與變量的標識符之間,這種類型的引用稱為左值引用左值看作是一個關聯了名稱的…

百度關鍵詞排名查詢源碼_章丘百度霸屏總部,關鍵詞排名騰沃云

上海保沃騰沃云為您詳細解讀URiIr章丘百度霸屏總部的相關知識與詳情,做網站SEO優化文章內容優化效果已經十分明顯。內容的量量關于網站的整體量量很重要。通過關鍵字闡發,陳某們曉得需要環繞關鍵字編寫網頁。使您的內容的重要根底是您對網頁籌算描述的賣…

java 結婚問題

題目 大家都知道,男大當婚,女大當嫁。那么女方家長要嫁女兒,當然要提出 一定的條件:高:180cm以上;富:財富1千萬以上;帥:是。 如果這三個條件同時滿足,則&…

密碼學專題 數據填充的方式|序列加密的方式

電子密碼本模式和加密分組鏈接模式的分組算法都要求加密輸入的分組是固定長度 的,但是大多數輸入明文可能都不是分組長度的整數倍,也就是說,最后一個分組一般來 說是不足一個分組長度的。為了使分組加密算法能夠正常工作,通常使用…

win10此電腦不見了_教程 | win10總提示“你要允許此應用對電腦的修改嗎”,如何關閉?...

在使用電腦的時候,你是否曾遇到過這樣的情況,點擊打開軟件的時候,系統總是提示我們“你要允許此應用對你的設備進行修改嗎?”難道是軟件中病毒了嗎?,這其實上并沒有什么用處,只是系統無法判斷軟…

java 小時轉換為xx天xx小時

題目 為抵抗洪水,戰士連續作戰89小時,編程計算共多少天零多少小時? 代碼 使用/與% class ExchangeTime {public static void main(String[] args) {/*為抵抗洪水,戰士連續作戰89小時,編程計算共多少天零多少小時&a…

密碼學專題 加密模式的選擇|傳輸數據加密

分組加密模式和序列加密模式。它們之間最大的區 別在于分組加密模式每次對一組數據進行加密運算處理,而序列加密模式則逐位對數據進 行加密運算處理。事實上,在實際設計應用的算法中,并沒有那么嚴格的區別,它們有可能是相互結合的…

微信公眾號數據2019_2019年9月原創公眾號排行榜數據報告出爐

西瓜數據發布 2019 年 9 月原創公眾號排行榜,分別從西瓜指數、原創文章占比、周期內公眾號發文次數、發文篇數、總閱讀數、頭條平均閱讀數等方面展示公眾號數據。榜單說明1、涉及榜單本期月榜截取 ①財經、②教育、③娛樂、④科技、⑤體育、⑥游戲、⑦文化、⑧美食、…

java 求100天之后是周幾

題目 今天是周二,100天以后是周幾? 代碼 代碼1:減去天數,使循環從周一開始 //方法1:減去天數,使循環從周一開始int today2;//7天一個循環:3 4 5 6 7 1 2 3 4 5 6 7int after100;//(100-5)%…

密碼學專題 OpenSSL專題

OpenSSL總體架構 軟件包分為三個主要的功能部分:密碼算法庫 、 SSL協議庫及應用程序 MacOS,MS,OS/2及 VMS這幾個目錄,包含了在不同的 平臺編譯時的環境變量配置文件,在安裝編譯完成之后,這幾個目錄就沒有作…

java 華氏溫度轉換為攝氏溫度

題目 小明要到美國旅游,可是那里的溫度是以華氏度為單位記錄的。 它需要一個程序將華氏溫度(80度)轉換為攝氏度,并以華氏度和攝氏度為單位分別顯示該溫度。 公式:華氏溫度(攝氏溫度-32)/1.8 M…

hs控什么意思_凡爾賽文學 到底是什么?

點擊藍字關注我們XIE XIE NI DE XI HUAN|| 動漫 情頭 耽美 閨蜜 男女頭 句子控 壁紙 ||左句 凡爾賽文學野象:老是有人提知不知道凡爾賽文學,說實話我不太清楚網絡時下流行的梗,也沒有興趣參與,我還是比較喜歡歐洲古典文學和后現…

密碼學專題 openssl編譯和安裝

Configure 腳本文件 使得OpenSSL可以適應多種不同的系統平臺和多達幾十種不同的編譯器。Configure指令還可以使OpenSSL在編譯的時候具備組件的選擇功能,比如可以選擇支持或者不支持某種算法或者協議等,這使得OpenSSL具有很大的靈活性,比如在…

Python學習12 文件的讀寫

目標 文件的打開和關閉 mode缺省情況下表示只讀r 文件的路徑 前面加個r’,代表其中的轉義字符不起作用 文件的打開方式 案例:實現文件拷貝的功能 將某一文件夾下的某一文件 保存在當前文件 所在目錄。 import os #讀取文件1 path./file.txt fileopen(path,…