<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 二進(jìn)制數及其他

二進(jìn)制數及其他

作者: 時(shí)間:2011-11-17 來(lái)源:網(wǎng)絡(luò ) 收藏
2 取余法來(lái)求解,則太費時(shí)間,這里我講一種方法,命名為“8421”法,可以快速的求解 255 以?xún)鹊臄祿?/p>本文引用地址:http://dyxdggzs.com/article/187198.htm

(超過(guò) 255 的數據建議大家用計算器來(lái)求解,手算或者心算就太費勁了。)。這個(gè)方法就是利用權,一個(gè) 4

位的,它的每一位的權恰好是 8421,如圖 3。

128 64 32 16 8 4 2 1

圖 3 每一位的權

接下來(lái)我們就以一個(gè)具體的例子來(lái)說(shuō)明這種方法的使用。先看轉換為十進(jìn)制數的例子,就是 上面說(shuō)的 10110 吧,把它的每一位的權都標出來(lái),如圖 4。

16 8 4 2 1

1 0 1 1 0

圖 4 二進(jìn)制數轉換為十進(jìn)制數的例子

我們只要把數值是 1 的位的權加起來(lái)就可以得到對應的十進(jìn)制數,即 16+4+2=22,完全一樣。但是比列

式子快速的多了,如果熟悉了每一位的權之后我們都可以心算,快速的算出結果為 22。

接下來(lái)講十進(jìn)制數轉換為二進(jìn)制數的例子,把十進(jìn)制數 55 轉換為二進(jìn)制數。開(kāi)始運算之前先把圖 3

畫(huà)在草稿紙上,然后開(kāi)始填 1,首先,55 在 64 和 32 之間,所以 64 處不能是 1,我們在 32 處寫(xiě) 1,這個(gè)

1 的權是 32,那么我們還剩下 55-32=23,比 16 大,我們在 16 的位置上寫(xiě) 1,這時(shí)候我們還剩下 23-

16=7,接著(zhù)我們就可以在 4、2 和 1 的位置上分別寫(xiě)一個(gè) 1,32+16+4+2+1 恰好等于 55,所以我們在 其他的位置上寫(xiě) 0,把這個(gè)數寫(xiě)出來(lái) 110111,就得到了轉換后的二進(jìn)制數了。整個(gè)過(guò)程如圖 5 所示。

點(diǎn)擊瀏覽下一頁(yè)

圖 5 十進(jìn)制數轉換為二進(jìn)制數

采用這種方法可以快速的實(shí)現二進(jìn)制數和十進(jìn)制數的相互轉換,這里要提醒大家一點(diǎn)了,我們只需要練習十

進(jìn)制數 255 以?xún)鹊臄祿投M(jìn)制數之間的相互轉換就可以了,太大的數據交給計算器來(lái)運算就好了,千萬(wàn) 不要為難自己,非要去計算 52369 的二進(jìn)制數,那將讓你失去許多樂(lè )趣的。相對于二進(jìn)制數來(lái)說(shuō),我們只 要能計算 8 位以?xún)鹊亩M(jìn)制數轉換為十進(jìn)制數就可,超過(guò) 8 位的還是交給計算器吧。當然了,每個(gè)人都有自 己的自由,如果某人要手工計算 32 位二進(jìn)制數轉換為十進(jìn)制數或者把一個(gè)上億的十進(jìn)制數轉換為二進(jìn)制 數,我也沒(méi)有辦法。

在現實(shí)生活中,對于十進(jìn)制數,我們自動(dòng)的根據數據的大小調整數位,15 有兩位有效數字,那么我

們寫(xiě) 15 就好,那么沒(méi)有人會(huì )寫(xiě)成 00015 的,同樣的 369 有三位有效數字,也沒(méi)人會(huì )寫(xiě)成 00369,因為 在數字的前面加 0 不改變大小,所以我們通常是省略前面的 0。但在數字電路中有另外一種情況,譬如我們 制造好了一個(gè)電路后,能表示 8 位二進(jìn)制數,那么就必須制造 8 個(gè)基本元件,每個(gè)基本元件存儲一個(gè)二進(jìn)制 數,那么表示任何一個(gè)數,都是這 8 個(gè)基本元件作為一個(gè)整體來(lái)表示的,這樣就會(huì )遇到多余的 0,如表示十 進(jìn)制數 30,那么就是 00011110,前面的 0 你不能省略,因為你不能說(shuō)最前面的 3 個(gè)元件不存儲數據了, 再者,電路造好之后你也不能隨便的用刀砍掉一部分。所以,在我們數字電路以及單片機課程中,一般遇到 的二進(jìn)制都是位數固定的,我們在寫(xiě)這些數據的時(shí)候一定不要省略前面的 0,那么這個(gè)固定的位數是多少呢?

8 的倍數,也就是說(shuō),一般來(lái)說(shuō)都是 8 位數一組,或者是 16 位,32 位,64 位,128 位等。

針對單片機中二進(jìn)制位數固定這一特點(diǎn),這里有幾個(gè)名詞:位(bit),字節(Byte),字

(Word)。其中位就是二進(jìn)制位,1 位就是一個(gè)二進(jìn)制位,稱(chēng)為 1bit,簡(jiǎn)寫(xiě) 1b,1 字節代表 8 個(gè)二進(jìn)制的

位,1Byte=8bit ,1 字代表 2 個(gè)字節,1Word=2Byte。Byte 可以簡(jiǎn)寫(xiě)作 B,我們可以得到如下公式:

1B=8b,1Word=2B=16b

隨著(zhù)計算機技術(shù)的發(fā)展,數據越來(lái)越多,我們還有幾個(gè)單位,KB,MB,GB,TB,其關(guān)系為:

1KB=1024B= 210 B

1MB=1024KB= 220 B

1GB=1024MB= 230 B

1TB=1024GB=2 40 B

2.3 十六進(jìn)制數出世

數字電路中都用二進(jìn)制數,計算機中當然也用二進(jìn)制數,而我們要與這些電路打交道,必然要會(huì )二進(jìn) 制數,大家看看以下這幾個(gè)二進(jìn)制數,然后抄一遍:

第一個(gè)數:00001101

第二個(gè)數:0101001110011010 的三個(gè)數:11100101011100110011001011101111 第四個(gè)數:

1101010001111000001110110110111011100110000011100100010010011100

第一個(gè)數是 8 位,寫(xiě)下來(lái)沒(méi)什么太大的關(guān)系,第二個(gè)數是 16 位,仔細的看一下,抄寫(xiě)也可以,第三個(gè)是32位,我想可能要非常吃力的才能寫(xiě)下來(lái),也許還要多次才能正確的抄寫(xiě)下來(lái),那么最后一個(gè) 64 位的,有人有勇氣面對它嗎?如果是寫(xiě)滿(mǎn)了 0 和 1 的 20 張 A4 的紙呢,任是誰(shuí)也會(huì )崩潰的,太苦惱了,如果每天都是 看到的都是這些數字,也只有神仙才可以做得到了。這還不算,怕的就是出錯了,滿(mǎn)目都是 0 和 1,稍微錯 了一位,面目全非了,所有的工作就要重新來(lái)過(guò)。有人會(huì )說(shuō),我直接轉換成 10 進(jìn)制數來(lái)讀寫(xiě)好了。但是二 進(jìn)制數轉換為十進(jìn)制數太繁瑣,誰(shuí)能告訴我最后一個(gè)數對應的十進(jìn)制數是多少呢?

二進(jìn)制數難讀,難寫(xiě),數據位數多,寫(xiě)和讀都不方便,而我們卻不能不看,不能不用,因為我們不能

不用數字電路,也不能不用計算機。當問(wèn)題出現了,我們就要解決它,于是出現了十六進(jìn)制。 十六進(jìn)制有十六個(gè)數碼:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,基數是 16,

運算時(shí)逢十六進(jìn)一。為什么說(shuō)十六進(jìn)制數解決了二進(jìn)制數讀寫(xiě)困難,也沒(méi)有十進(jìn)制數轉換繁瑣的困局呢?因 為十六進(jìn)制和二進(jìn)制數相互轉換非常簡(jiǎn)單,4 位二進(jìn)制數對應于一位十六進(jìn)制數,這樣就可以把上述冗長(cháng)的 二進(jìn)制數轉換為十六進(jìn)制數。上面四個(gè)二進(jìn)制數轉換為十六進(jìn)制數為:

第一個(gè)數:0D 第二個(gè)數:539A 的三個(gè)數:E57332EF

第四個(gè)數:D4783B6EE60E449C

當你看到上面這組數據的時(shí)候,讀和寫(xiě)的時(shí)候要輕松的多了吧,這樣我們被前面二進(jìn)制數打擊的信心 又回來(lái)了。那么你一定迫切的想知道二進(jìn)制數和十六進(jìn)制數是如何轉換的吧。好吧,我們就來(lái)講二進(jìn)制數和 十六進(jìn)制數的轉換。

二進(jìn)制數轉換為十六進(jìn)制數:4 位一組,分別轉換;

十六進(jìn)制數轉換為二進(jìn)制數:1 位轉換為 4 位,原序排列。 在進(jìn)行學(xué)習二進(jìn)制數和十六進(jìn)制數轉換之前,先看一個(gè)表格,

表 2 十進(jìn)制數、二進(jìn)制數、十六進(jìn)制數的對應關(guān)系

十進(jìn)制數

二進(jìn)制數

十六進(jìn)制數

十進(jìn)制數

二進(jìn)制數

十六進(jìn)制數

0

0000

0

8

1000

8

1

0001

1

9

1001

9

2

0010

2

10

1010

A

3

0011

3

11

1011

B

4

0100

4

12

1100

C

5

0101

5

13

1101

D

6

0110

6

14

1110

E

7

0111

7

15

1111

F

我們只要對照這個(gè)表格,就可以很輕松的進(jìn)行二進(jìn)制數和十六進(jìn)制數的轉換了。下面用具體的例子來(lái)說(shuō)明。

例 1 把二進(jìn)制數 1011 0110 轉換為十六進(jìn)制數

首先把二進(jìn)制數分組

1011 0110

B 6

則二進(jìn)制數 10110110 轉換為十六進(jìn)制數就是 B6 了。更多的位數一樣的轉換。

例 2 把二進(jìn)制數 1110 1100 0111 0010 轉換為十六進(jìn)制數 把二進(jìn)制數分組

1110 1100 0111 0010

E C 7 2

轉換的結果為十六進(jìn)制數 EC72

反過(guò)來(lái),十六進(jìn)制數轉換為二進(jìn)制數則反過(guò)來(lái),直接一位變?yōu)?4 位就可以了。例如把十六進(jìn)制數

A157 轉換為二進(jìn)制數,則

A 1 5 7

1010 0001 0101 0111

轉換后的結果就是 1010 0001 0101 0111。

正因為十六進(jìn)制數和二進(jìn)制數的相互轉換不需要進(jìn)行計算,只是簡(jiǎn)單的替換就可以,所以我們在很多 場(chǎng)合下經(jīng)常用十六進(jìn)制數來(lái)代替二進(jìn)制數,在學(xué)習單片機課程的時(shí)候,經(jīng)常遇到十六進(jìn)制數,所以必須掌握 十六進(jìn)制數和二進(jìn)制數的相互轉換,而且要能熟練的轉換。針對表 2,我建議大家就用 8421 法來(lái)記憶,數 字都很小,即使記不住,臨時(shí)來(lái)計算也很快的。

二進(jìn)制數和十六進(jìn)制數能夠相互轉換,那么十進(jìn)制數和十六進(jìn)制數的相互轉換怎么做呢?十進(jìn)制數和 十六進(jìn)制數可以直接相互轉換,也可以用加權法,十六進(jìn)制數的每一位的權是 1,16,256,4096……數 據運算量比較大,所以我們就簡(jiǎn)單的計算一下 2 位的十六進(jìn)制數和十進(jìn)制數的相互轉換,太大的數據就不要 為難自己了,用計算器吧。我的方法是先轉換為二進(jìn)制數,然后再把二進(jìn)制數轉換為十進(jìn)制數,這樣手算的 速度要快些。反過(guò)來(lái),要把十進(jìn)制數轉換為十六進(jìn)制數,也是先把十進(jìn)制數轉換為二進(jìn)制數,然后在轉換為 十六進(jìn)制數。

我們現實(shí)生活中使用十進(jìn)制數,而計算機中使用二進(jìn)制數,為了讀寫(xiě)的方便,我們發(fā)明了十六進(jìn)制 數,并且通過(guò)上面的學(xué)習我們也知道了如何快速的在這三種進(jìn)制數據之間相互轉換,應該沒(méi)有上面太大的問(wèn) 題了。但是還有一個(gè)問(wèn)題,大家再看一看表 2,二進(jìn)制、十進(jìn)制、十六進(jìn)制數據他們的數碼,你會(huì )發(fā)現數碼 有重合的部分,這就有問(wèn)題了,如果出現了一個(gè)數據,如何知道是那種進(jìn)制的數據呢?如

1110,145,562??赡苡腥藭?huì )說(shuō),第一個(gè)數是二進(jìn)制數,第二個(gè)和第三個(gè)數據是十進(jìn)制數。但這是錯誤 的。就如一件衣服 200 元,如果在重慶,那么就是 200 人民幣,如果是在香港買(mǎi)的,那么就是 200 港元, 如果你跑到英國去買(mǎi),那么可能會(huì )是 200 英鎊或者 200 歐元了,這可是不一樣的,而且差別很大。這個(gè)時(shí) 候你再來(lái)看看 1110 和 145 這兩個(gè)數,到底是什么進(jìn)制的數據呢?不知道,除非做了說(shuō)明。這就是我要講 的另外一個(gè)問(wèn)題,對于任何一個(gè)數字,我們必須作出說(shuō)明是什么進(jìn)制數據才有意義,否則我們不知道它的真

實(shí)大小。那么如何來(lái)區分這三種進(jìn)制的數據呢?我們采用在數字的末尾加一個(gè)字母來(lái)表示。

二進(jìn)制的英文單詞是 Binary,十進(jìn)制的英文單詞是 Decimal,十六進(jìn)制的英文單詞是

Hexadecimal,所以我們就在二進(jìn)制數后面加字母 B ,在十進(jìn)制數后面加字母 D ,在十六進(jìn)制數后面加字

母 H,這樣就可以區分這三種進(jìn)制的數據了。如 1010B,145D,562H 等等。因為我們現實(shí)生活中用的最 多的是十進(jìn)制數,所以十進(jìn)制數后的字母 D 可以省略,直接寫(xiě) 145,就如我們在中國買(mǎi)東西,標價(jià)是 200 的話(huà)默認單位就是人民幣了,但二進(jìn)制數和十六進(jìn)制數后的字母不能省略。

2.4 負號的解決之道

以上在討論數值的時(shí)候都只考慮了正數的情況,其實(shí)我們還使用負數以及小數,鑒于小數在我們課程 的學(xué)習階段用的不是很多,特別是 9051 單片機,對于小數的運算非常不擅長(cháng),所以也就很少用到了,自然 不會(huì )講太多。接下來(lái)我們就僅討論負數的問(wèn)題。

在數學(xué)運算中,表示一個(gè)數的正負,我們在數據的前面加上一個(gè) 正號或者負號(+/-),但是在計算 機中,對于這個(gè)正負號的表示就有點(diǎn)問(wèn)題了,計算機中只能使用 0 和 1,沒(méi)法使用+ -,那么我們如何表示 一個(gè)數值的正負呢?方法是用 0 和 1 來(lái)表示正負號。正常的情況下,我們用 0 來(lái)表示正號,1 來(lái)表示負號。 這樣,我們對于一個(gè)數值就有兩部分構成,符號位和數值位,符號位用 0 和 1 來(lái)表示正負,數值位表示大 小。計算機中的數值有很多,為了防止符號位和數值位不對應,我們一般把符號位和數值位作為一個(gè)整體來(lái) 處理。前面我們講過(guò),在計算機中經(jīng)常用到的單位是 Byte,有 8bit,我們就把最高位作為符號位,其他的 7 位作為數值位。如圖 6。

D7 D6 D5 D4 D3 D2 D1 D0

符號位 數值位

0 正數

1 負數

圖 6 符號位和數值位

這樣我們就可以用二進(jìn)制數來(lái)表示負數了。如

+10=0000 1010B

-10=1000 1010B

這樣我們就不怕負數了。我們來(lái)計算一下+10 + (-10)的結果。在計算機中,+10 和-10 我們已經(jīng)轉化 為二進(jìn)制數了,這里直接列豎式相加就可以了

0000 1010

+ 1000 1010

————————————

1001 0100

為什么結果不是 0?難道+10 +(-10)不等于 0?答案肯定是 0 的,絕對是二進(jìn)制數運算出錯,可是錯誤

在哪里呢?大家思考一下數學(xué)中對于兩個(gè)數據相加是如何做的?首先是比較兩個(gè)數的符號,如果符號相同, 那么兩個(gè)數值相加,符號不變,而如果兩個(gè)數值符號不同,則比較一下哪個(gè)數值大,用數值較大的減去數值 較小的,符號用數值較大的符號。也就是說(shuō),我們數學(xué)上計算的時(shí)候是分情況的,而在上面的式子中,我們 把符號也參與運算了,并沒(méi)有比較兩個(gè)數的數值大小。



關(guān)鍵詞: 二進(jìn)制數

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>