數(shù)字芯片本質(zhì)是0-1邏輯。我們將用系列文章來一起學(xué)習(xí)數(shù)字電路基礎(chǔ)。我們的目標(biāo)不是求大求全,而是整理一些面試過程跟數(shù)字電路基礎(chǔ)相關(guān)的知識點(diǎn),以及平時(shí)工作中經(jīng)常用到的數(shù)字電路知識點(diǎn),大家一起學(xué)有所用,學(xué)有所成!
內(nèi)容概括
這次為大家講述的內(nèi)容包括:
數(shù)值表示
進(jìn)制轉(zhuǎn)換
小數(shù)的表示方法
有符號數(shù)和無符號數(shù)
原碼反碼補(bǔ)碼
0****1
數(shù)值表示:
在計(jì)算機(jī)系統(tǒng)中,要表示一個(gè)數(shù),原則上我們可以使用任意進(jìn)制來描述,但在實(shí)際應(yīng)用中一般用二進(jìn)制、八進(jìn)制、十進(jìn)制、十六進(jìn)制來表示一個(gè)數(shù)。
二進(jìn)制表示一個(gè)數(shù)只能用0、1兩個(gè)數(shù)字來表示,比如10011(十進(jìn)制是19);
八進(jìn)制表示一個(gè)數(shù)只能用0~7八個(gè)數(shù)字來表示,比如017(十進(jìn)制是15). 八進(jìn)制通常以0開頭,用來區(qū)分十進(jìn)制;
十進(jìn)制表示一個(gè)數(shù)只能用0~9十個(gè)數(shù)字來表示,這是平時(shí)經(jīng)常用的,比如100
十六進(jìn)制表示一個(gè)數(shù)只能用09,AF這16個(gè)數(shù)字來表示,其中A~F換成10進(jìn)制就是10-15,十六進(jìn)制通常以0x開頭,用來區(qū)分十進(jìn)制。比如0x1f(十進(jìn)制是31)
通過上面的介紹,我們也可以看出,N進(jìn)制表示一個(gè)數(shù),可以用0~N之間的N個(gè)數(shù)字來表示,N進(jìn)制表示的數(shù),轉(zhuǎn)換成十進(jìn)制的方法如下:
數(shù)字的值*N((數(shù)字所在位置-1)次方)
比如六進(jìn)制表示一個(gè)數(shù)125,那么如何算這個(gè)數(shù)的十進(jìn)制表示的值呢?換算方法如下:
- 1 (6的2次方)+2* (6的一次方)+5*(6的0次方) = 53**
02
進(jìn)制轉(zhuǎn)換
上面介紹了一個(gè)數(shù)值如何用進(jìn)制來表示,對同一個(gè)數(shù)值而言,可以用多種進(jìn)制來表示,進(jìn)制之間可以相互轉(zhuǎn)換。在實(shí)際應(yīng)用中,N進(jìn)制換算成M進(jìn)制,我們一般會先從N進(jìn)制換算到十進(jìn)制,再從十進(jìn)制換算到M進(jìn)制。下面我們通過一些例子來說明進(jìn)制之間如何轉(zhuǎn)換。
01
十進(jìn)制轉(zhuǎn)二進(jìn)制
把該十進(jìn)制數(shù),用二因式分解,取余。
以235為例,轉(zhuǎn)為二進(jìn)制
235除以2得117,余1
117除以2得58,余1
58除以2得29,余0
29除以2得14,余1
14除以2得7,余0
7除以2得3,余1
3除以2得1,余1
從得到的1開始寫起,余數(shù)倒排,加在它后面,就可得11101011。
02
**十進(jìn)制轉(zhuǎn)八進(jìn)制
**
把該十進(jìn)制數(shù),用8因式分解,取余。
以100為例,轉(zhuǎn)為八進(jìn)制
100除以8得12,余4
12除以8得1,余4
1除以8得0,余1
轉(zhuǎn)成八進(jìn)制就是0144
03
**二進(jìn)制轉(zhuǎn)十進(jìn)制
**
二進(jìn)制轉(zhuǎn)為十進(jìn)制要從右到左用二進(jìn)制的每個(gè)數(shù)去乘以2的相應(yīng)次方。
以二進(jìn)制數(shù)10101為例
- 1 (2的4次方)+1* (2的2次方) + 1*(2的0次方) = 21**
03
小數(shù)的表示方法
一個(gè)數(shù)會包含整數(shù)部分和小數(shù)部分,上面章節(jié)已經(jīng)講述了整數(shù)部分如何表示,本小結(jié)介紹一下小數(shù)部分是如何表示的。
- 實(shí)數(shù)A可以用二進(jìn)制表示為(An (2* N) + An-1 (2 (N-1))+…+A2 * 2(* 2) + A1 (2* 1) + A0+ A-1(2* (-1) )+ A-2(2**(-2)) +……).**
從上面可以看到,小數(shù)部分就是2的負(fù)冪次方多項(xiàng)式構(gòu)成,因此小數(shù)的數(shù)值用二進(jìn)制表示就是從高到底依次為A-1A-2A-3A-4….
用多項(xiàng)式描述一個(gè)數(shù),可以看到存在一個(gè)問題就是小數(shù)部分存在無法精確表示的問題,比如0.6 這個(gè)小數(shù)數(shù)值,如果用二進(jìn)制的話,2的負(fù)冪次方多項(xiàng)式只能無限接近,但無法等于0.6。
十進(jìn)制的小數(shù)數(shù)值用二進(jìn)制來表示方法:
將該數(shù)字乘以2,取出整數(shù)部分作為二進(jìn)制表示的第1位;然后再將小數(shù)部分乘以2,將得到的整數(shù)部分作為二進(jìn)制表示的第2位;以此類推,知道小數(shù)部分為0。舉例如下:
十進(jìn)制0.4轉(zhuǎn)成二進(jìn)制:
0.4 * 2 = 0.8 整數(shù)部分是0
0.8 * 2 = 1.6 整數(shù)部分是1
0.6 * 2 = 1.2 整數(shù)部分是1
0.2 * 2 = 0.4 整數(shù)部分是 0
可以看到進(jìn)入循環(huán)了,因此0.4的二進(jìn)制表示為0110 0110 0110 …..
二進(jìn)制小數(shù)轉(zhuǎn)成十進(jìn)制方法:
按位乘以權(quán)重,然后相加。二進(jìn)制小數(shù)點(diǎn)后第1位乘以2^(-1),第2位乘以2^(-2)
以此類推,然后相加即可
**例如:0.101——>12^(-1)+02^(-2)+1*2^(-3)=0.5+0+0.125=0.625**
十進(jìn)制小數(shù)數(shù)值轉(zhuǎn)成其他進(jìn)制也是類似的,所有的原理都是一個(gè)實(shí)數(shù)可以用一個(gè)多項(xiàng)式來表示,正數(shù)次冪部分代表的是整數(shù)部分,負(fù)數(shù)次冪部分代表的是小數(shù)部分。
04
有符號數(shù)和無符號數(shù)
從底層硬件來講,存儲的都是0/1這樣的狀態(tài),本是是沒有有符號和無符號之分的。但計(jì)算機(jī)應(yīng)用時(shí),根據(jù)描述現(xiàn)實(shí)世界的需求,可以在軟件中指定這個(gè)變量是有符號變量還是無符號變量,從而這個(gè)變量的數(shù)值是有符號數(shù)值還是無符號數(shù)值。因此這兩個(gè)定義其實(shí)是計(jì)算機(jī)應(yīng)用的范疇。
有符號和無符號數(shù),簡單的區(qū)別就是,無符號數(shù)所有的位都是用來表示一個(gè)數(shù),有符號數(shù)最高位用來表示符號位,其他位用來表示實(shí)際的數(shù)值。對于某一個(gè)具體的數(shù)值,不管是有符號表示還是無符號表示,它的二進(jìn)制表示都是一樣的。
在8位機(jī)的系統(tǒng)中,地址和數(shù)據(jù)總線是8bit的,無符號變量表示的值的范圍是0255,有符號變量表示的值的范圍是-128127
另外還有一點(diǎn),如果一個(gè)數(shù)值聲明為有符號數(shù),那么最高位是bit位,這是按照二進(jìn)制表示這個(gè)數(shù)值之后的最高位,其實(shí)在計(jì)算系統(tǒng)里面,比如有8位機(jī),16位機(jī),32位機(jī),64位機(jī),一個(gè)數(shù)的最大位寬也就上面對應(yīng)的bit數(shù), 如果某個(gè)數(shù)標(biāo)識為有符號數(shù),那么對應(yīng)第7bit, 15bit,31bit,63bit就是符號位。
05
原碼反碼補(bǔ)碼
這三個(gè)概念其實(shí)都是對有符號數(shù)來講的,無符號數(shù)不存在上面這些概念。
這些概念都是為了在計(jì)算機(jī)系統(tǒng)中描述一個(gè)負(fù)數(shù)而創(chuàng)建的,通過這些概念擴(kuò)展二進(jìn)制數(shù)字系統(tǒng),從而可以表示有符號數(shù)。
正數(shù)的原碼、反碼、補(bǔ)碼都是一樣的。
負(fù)數(shù)的原碼就是符號位為1,其余位表示真值,舉例如下(8位機(jī)):
-2的原碼就是1000_0010(高位符號位為1,其余位是2)
負(fù)數(shù)的反碼其實(shí)是在原碼的基礎(chǔ)上, 符號位不變,其余各個(gè)位取反,舉例如下(8位機(jī)):
-2的反碼就是1111_1101(在-2的原碼上,符號位不變,其他位取反)
負(fù)數(shù)的補(bǔ)碼是反碼+1,舉例如下(8位機(jī)):
-2的補(bǔ)碼就是1111_1110(在-2的反碼上加1)
所以我們這里講這三個(gè)概念,有一個(gè)大前提就是,要明確好當(dāng)前這個(gè)系統(tǒng)是多少bit的系統(tǒng),這樣才能確定符號位是哪bit。
-
二進(jìn)制
+關(guān)注
關(guān)注
2文章
803瀏覽量
42011 -
計(jì)算機(jī)系統(tǒng)
+關(guān)注
關(guān)注
0文章
290瀏覽量
24440 -
數(shù)字芯片
+關(guān)注
關(guān)注
1文章
110瀏覽量
18642
發(fā)布評論請先 登錄
相關(guān)推薦
電路基礎(chǔ)知識講解 電路基本元件知識與電路元件的伏安特性和功率特性

評論