跟我學java編程—不得不說的二進位和十六進位

2021-01-08 米粒教育

計算機能夠識別的數制是二進位數,二進位數是用0和1兩個數字來表示的數,計算機的指令集也是採用二進位表示,機器語言就是用二進位數編寫程序。

可以藉助十進位數來理解二進位數。在十進位中,每一位有0、1、2、3、4、5、6、7、8、9十個數碼,因此基數為10,超過9就必須用多位數來表示,並遵循逢十進一的原則。一個任意的十進位數可以表示為:

其含義是:

其中ai(i=0,1…,n),bj(j=1,2,…,m)是0、1、2、3、4、5、6、7、8、9十個數碼中的一個。

上式中相應於每位數字的10n稱為該數字的權,其大小是以基數為底,數碼所在位置的序號為指數的整數次冪,每位數字乘以其權所得的乘積之和即為所表示數的值。

例如:

十進位是人們最熟悉、最常用的一種數制,但它不是唯一的數制。例如計時用的時、分、秒就是按60進位計數的。基數為r的r進位數可以表示為:

● 二進位和十六進位數

計算機就其本身來說是一個電器設備,為了能夠快速存儲、處理、傳遞信息,其內部採用了大量的電子元件,在這些電子元件中,電路的通和斷、電壓高低,這兩種狀態最容易實現,也最穩定、也最容易實現對電路本身的控制。計算機工程師將計算機所能表示這樣的狀態,用0,1來表示、即用二進位數表示計算機內部的所有運算和操作。二進位數運算非常簡單,計算機很容易實現,所以計算機內部都用二進位編碼進行數據的傳送和計算。

二進位的基數為2,只有0、1兩個數碼,並遵循逢二進一的原則,它的各位權是以2k表示的,因此二進位數

的值為:

其中ai,bj為0、1兩個數碼中的一個。例如:

其中數的下標表示該數的基數r,即二進位的101101與十進位的45等值。

n位的二進位數可以表示2n個數。例如:3位二進位數可以表示8個數,分別是:

而4位二進位數則能表示十進位的0 ~ 15共16個數如下:

為了方便閱讀及書寫,經常使用十六進位來表示二進位數,十六進位的基數是16,數碼為0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,其中用A,B,C,D,E,F(字母不區分大小寫)這六個字母來分別表示10,11,12,13,14,15。

按同樣的方法,可以很容易地掌握十六進位數的表示方法。例如:

在計算機程式語言中,通常用數字後面跟一個英文字母來表示該數的數制。十進位一般用D(Decimal)、二進位數用B(Binary)、十六進位用H(Hexadecimal)來表示。例如:23AH、570D、110101B、0075H,…。當然也可以用這些字母的小寫形式。

● 不同進位數的相互轉換

計算機中採用的是二進位,但用計算機解決實際問題時對數值的輸入輸出通常使用十進位,這就有一個十進位向二進位轉換或由二進位向十進位轉換的過程。也就是說,在使用計算機進行數據處理時首先必須把輸入的十進位數轉換成計算機所能接受的二進位數;計算機在運行結束後,再把二進位數轉換為人們所習慣的十進位數輸出。

1、二進位數轉換成十進位數

把二進位數轉換成十進位數就是用「按權相加法」,把二進位數首先寫成加權係數展開式,然後按十進位加法規則求和。

例:把二進位數110.11轉換成十進位數。

2、十進位數轉換為二進位數

前面「按權相加法」中,權的值在小數點左邊和小數點右邊是不一樣的。所以,十進位數轉換為二進位數時,整數和小數的轉換方法也不同,一般先把十進位數的整數部分和小數部分分別轉換後,再加以合併。

十進位整數轉換為二進位整數採用"除2取餘,逆排序"法。具體做法是:用2去除十進位整數,可以得到一個商和餘數;再用2去除商,又會得到一個商和餘數,如此進行,直到商為零時為止,然後把所有餘數按逆序排列,也就是把先得到的餘數作為二進位數的低位有效位,後得到的餘數作為二進位數的高位有效位,依次排列起來。這就是所謂「除2取餘,逆序排列」。

例:將一個十進位數25轉換為二進位數。

3、十六進位和二進位之間的轉換

由於十六進位的基數是2的冪,所以這兩種數制之間的轉換是十分容易的。一個二進位數,只要把它從低位到高位每4位組成一組,直接用十六進位數來表示就可了。

例:0011 0101 1011 1111 = 35BF

3 5 B F

反之,把十六進位數中的每一位用4位二進位數表示,就形成相應的二進位數了。

A 1 9 C

例:A19C = 1010 0001 1001 1100

4、十六進位數轉換為十進位數

同二進位數轉換十進位數相同,各位十六進位數與其對應權值的乘積之和即為與此十六進位相對應的十進位數。

例:N = BF3CH

=11*4096+15*256+3*16+12*1

=48956D

十進位數轉換為十六進位數也可使用除法進行。

二進位數是逢二進位的進位制,0、1是基本算符,計算機運算基礎採用二進位。編程過程中經常會用到十六進位,而十進位的使用非常少,這是因為十六進位和二進位有天然的聯繫:四個二進位位可以表示從0到15的數字,這剛好是1個16進位位可以表示的數據,也就是說,將二進位轉換成十六進位只要每4位進行轉換就可以了。

1、將下列二進位數轉換為十六進位數和十進位數:

(1)10101 (2)10000000 (3)11111111

2、用除法將下列十進位數轉換為二進位數和十六進位數:

(1)369 (2)10000 (3)4095

3、將下列十六進位數轉換為二進位數和十進位數:

(1)FA (2)5B (3)F234

相關焦點

  • C/C+編程筆記:C語言進位詳解,二進位、八進位和十六進位!
    在計算機內部,數據都是以二進位的形式存儲的,二進位是學習編程必須掌握的基礎。本節我們先講解二進位的概念,下節講解數據在內存中的存儲,讓大家學以致用。 二進位加減法和十進位加減法的思想是類似的: 對於十進位,進行加法運算時逢十進一,進行減法運算時借一當十; 對於二進位,進行加法運算時逢二進一,進行減法運算時借一當二。 下面兩張示意圖詳細演示了二進位加減法的運算過程。
  • 程式設計師的情商:二進位電腦能識別,十進位人易懂,十六進位能做啥
    計算機專業的同學,在學習編程中,尤其是初學者,經常有這樣的疑問,一般人只認識十進位(520),電腦只能識別二進位(1000001001),那十六進位(208)能做什麼的?為什麼還要在中間加上一個十六進位呢,是不是多此一舉嗎?本來初學編程,對二進位就不熟悉,要花不少時間和理解來學習理解,在學個十六進位不是很多餘嗎?
  • 二進位、八進位、十六進位在現實當中有什麼意義?
    二進位二進位的出現是創歷史性的,在古代就有兩儀生四象,四象生八卦,八卦生萬物的說法,世間萬事萬物至少都有兩個狀態,比如生存/死亡、開/關、好/壞、高/低、大/小、長/短、胖/瘦等,這兩個狀態就可以使用二進位的0和1來表示。如今二進位主要運用於電子技術的數字電路當中,就比如計算機,最直接能夠識別的語言就是二進位語言。
  • 關於二進位、十進位、八進位、十六進位數據轉換計算方法詳細總結
    下面在安靜的音樂中,讓我們開始學習吧在我們接觸編程知識時,總會接觸有關進位轉換的知識,最常見的就是10進位與二進位或十六進位之間的轉換,很多時候我們總會遺忘,雖然現在也出現了很多可以直接使用的網絡在線的進位轉換工具,但考試中,我們就要靠自己通過公式進行運算了。今天就跟大家分享一下有關進位轉換的理論知識,大家可以通過對比從裡面發現共同點,這樣便於我們理解記憶。
  • 二進位、十進位、八進位、十六進位間的相互轉換函數
    二進位、十進位、八進位、十六進位間的相互轉換函數1、輸入任意一個十進位的整數,將其分別轉換為二進位、八進位、十六進位。{int num;char a[39];//定義一個字符數組,用於存儲字符串cout<<"Entre num:"<<endl;cin>>num;cout<<"二進位
  • JAVA-二進位基礎
    一、二進位的概念計算機進位有:二進位、八進位、十六進位進位的基本特點是:每一位置上的數字必須在0-(進位-1)的範圍內,也就是說二進位只能有0、1;八進位為:0-7;十六進位比較特殊為:0-9,A(10) B(11) C(12) D(13) E(14) F(15)進位轉換:1、非十進位轉換十進位:每位數字乘以進位數的權重次方
  • 電腦內部為什麼不用十進位?採用八進位和十六進位的原因
    電腦是由0和1組成的,相信大部分人都聽過,對應電路中的通電和不通電,所以電腦底層是由二進位組成的。那為什麼不在二進位上建立十進位,而是採用八進位和十六進位呢?理論是可以在二進位基礎上就建立十進位的,但相比之下,效率會變慢,算法會複雜。我們看下面這張圖,二進位和八進位之間轉換非常簡單,記住八個對應關係,不用紙張演算就能說出來。
  • 數據的表示二進位八進位十進位十六進位之間的轉換
    數據的表示1.R進位轉十進位R進位轉十進位使用按權展開法二進位 10100.01 = 1x24+1x22+1x2-2七進位 604.01 = 6x72+4x70+1x7-2十進位 1227 = 1x103+2x102+2x101+7x1002.十進位轉
  • C語言編程預備知識-進位和常量
    C語言編程預備知識-進位和常量什麼是進位?進位也就是進位計數制,是人為定義的帶進位的計數方法進位制計數法是一種記數方式,故亦稱進位記數法計數法,可以用有限的數字符號代表所有的數值。可使用數字符號的數目稱為基數或底數,基數為n,即可稱n進位制,簡稱n進位。
  • 一大波 Excel 進位轉換函數來襲,二、八、十、十六進位互轉
    偶然看到某些「老師」教十進位轉二進位,寫了好幾行的巨複雜公式,看得我尷尬癌都犯了。愚公移山精神固然可嘉,但方法絕不可取,若還把此作為「正確方法」傳播,那就是誤人子弟,應該批判了。Excel 中明明有專門的進位轉換函數,但是連很多所謂的「老師」都不知道,所以才會出現自創公式的烏龍。我今天把各種進位轉換函數都給大家講一講,如果記不住的同學可以先收藏,要用的時候查看一下就行。
  • 跟我學java編程—Java的格式化輸出
    用記事本打開「PrintfSample.java」文件,輸入以下代碼:代碼結構分析程序功能主要是演示println方法和printf的輸出雙精度浮點數的區別,println方法輸出雙精度浮點數時,不能對小數的有效位數控制輸出,printf方法可以控制小數有效位數的輸出。程序增加了塊注釋語句,用於方法、語句以及變量的具體說明,提高程序代碼的可讀性和可維護性。
  • 零基礎學編程之進位轉換基礎
    十進位和二進位可以相互轉換,如下所示:10進位轉2進位上圖中,10稱做基數,10^n(10至此,得出了結論:在封閉的四位運算中(超出4位就丟棄),這種設計和規定是非常合理的。可是,我們又有了疑問:(-1)*(1)=?,會不會和結果就不一樣了?
  • python進位轉換:十進位轉二進位的用法
    dec(十進位)—> bin(二進位)dec(十進位)—> oct(八進位)dec(十進位)—> hex(十六進位)二、十進位我們所熟知的十進位,其實是從 0 開始,數到 9 之後,就跳到
  • scratch3.0圖形化編程軟體解決「進位轉換(二進位)」問題
    想要回顧的請移步「百度百科」,嘻嘻首先 我們來看一下1~16 的一個二進位與十進位的對照表格:以上表格就是0-16的表達對照這種方法就是我之前文章的「思路1」,感興趣的網友們可以去看一下我之前的文章連結→scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)這次我們主要說一下「短除法」思路解決十進位轉換為二進位
  • 嵌入式,單片機編程基礎-二進位
    作為一名嵌入式底層驅動開發人員,或者是單片機的固件編程人員,掌握一些二進位的基本知識是很必要的。首先,我們在看處理器的參考手冊時,看到最多的就是有關寄存器的介紹。我們開發驅動程序,本質上也是設置或讀取這些寄存器。參考手冊介紹寄存器時一般都是以比特位為單位介紹的。
  • Day7 進位的表示與轉換
    這節課的內容太簡單了……學習進位的轉換。在計算機中,我們常用的進位有4種。一、二進位(Binary)在二進位裡,只有 0 和 1,二進位的運算遵循逢二進一。在 python 中要輸入一個二進位數,你不能直接輸入。比如我輸入一個 666 看看。很明顯這是個十進位。
  • 你可能不知道,二進位比十進位更簡單
    在世界各文明獨立發展的數學中,出現過二十進位、六十進位、十六進位、十進位等,其中最廣泛採用的數制是十進位。亞里斯多德曾對此分析,可能是因為人有十個手指頭的緣故。直到現在,小朋友們學算術時還經常掰著手指頭算簡單的加減運算。
  • scratch+程小奔機器人實現「進位轉換」(十進位轉二進位)
    也就說滿十進一;而在計算機的世界裡,基礎電路只有「開/關(通/斷)」(即0/1)兩種情況,這與誕生幾千年的二進位不謀而合;例如:二進位數字110,表達的就是十進位中的6;二進位數字1111,表達的就是十進位中的15。
  • 表格技巧—Excel中將十進位轉成十六進位
    在我們平時使用Excel表格時,經常需要將數字在進位中間切換,其中比較常見的就是十進位和十六進位。這是因為在計算機領域,十六進位還是經常用到的。那麼如何將十進位轉成十六進位呢?下面我們就來學習一下。  打開一個Excel文檔,看到文中有一組十進位的數據:
  • 進位轉換器
    進位轉換器 系統安全 大小: 7.52MB