03、計算機基礎--數制


數制

計算機的硬件基礎是數字電路,只有低電平和高電平兩種穩定狀態的信號,所以使用二進制。

計算機的數制有很多種:

二進制、四進制、八進制、十進制、十六進制、三十二進制

通常使用最為廣泛的是二進制和十六進制。其中十進制就是我們平時看到的數字。

二進制

計算機中為了便於物理存儲,采用二進制表達數值。二進制的特點如下:

逢2進1,由0和1兩個數碼組成,基數為2,各個位權以$ 2^k $表示。

  • 二進制運算

1、二進制的加法,根據“逢二進一”規則,二進制數加法的法則為:

0+0=0
0+1=1+0=1
1+1=0 (進位為1)
1+1+1=1 (進位為1)

2、二進制的減法,根據“借一有二”的規則,二進制數減法的法則為:

0-0=0
1-1=0
1-0=1
10-1=1 (借位為1)

一般乘法和除法基本很少會用到,這里不再敘述。

十六進制

十六進制數的基數是16,共有16個數碼:0、1、2、3、4、5、6、7、8、9和A、B、C、D、E、F(可為小寫),逢16進位,各個位的位權為16k。

十六進制數的加減運算也類似十進制,但注意逢16進位1,借1當16。

3F+4A=89,個位F+A=19進1,所以個位是9,十位3 + 4 + 1 = 8,所以等於89.

這里的后綴字母 H(或小寫 h)表示十六進制形式表達的數據。(常用來表示地址、數據、指令代碼)

進制轉換

在開發中,我們接觸最多的就是進制的轉換,下面會大致的講解。

  • 二進制轉十進制

    二進制轉為十進制要從右到左用二進制的每個數去乘以2的相應次方,小數點后則是從左往右。

其中首位是0表示正整數,首位是1則為負整數,正整數可以直接換算,負整數則需要先減一取反再換算。

計算機內部數的字節單位是固定長度的,在位數不夠時會在高位補0。

如要想二進制00110轉十進制,因為以0開頭,所以這是正整數,計算如下所示:

\(0 * 2^0 + 1 * 2^1 + 1 * 2^2 + 0 * 2^3 + 0 * 2^4\) = 6

如果想二進制11001轉十進制,因為以1開頭,所以是負整數,需要先減一取反再換算。取反結果:00111

\(1 * 2^0 + 1 * 2^1 + 1 * 2^2 + 0 * 2^3 + 0 * 2^4\) = - 7

  • 十進制轉二進制

十進制轉二進制分為整數轉二進制,和小數轉二進制。

1、整數轉二進制,采用除2取余,逆序排列法:

首先用2整除一個十進制整數,得到一個商和余數
然后再用2去除得到的商,又會得到一個商和余數
重復操作,一直到商為小於1時為止
然后將得到的所有余數全部排列起來,再將它反過來(逆序排列)

假設我們需要將42轉為二進制:

42 / 2 = 21 ... 0;
21 / 2 = 10 ... 1;
10 / 2 = 5 ... 0;
5 / 2 = 2 ... 1;
2 / 2 = 1 .... 0;
1 / 2 = 0 ... 1;

得到結果010101再取反得到二進制數:101010。

2、小數轉二進制,采用乘2取整,順序排列法

用2乘十進制小數,可以得到積,將積的整數部分取出
再用2乘余下的小數部分,又得到一個積,再將積的整數部分取出
重復操作,直到積中的小數部分為零,此時0或1為二進制的最后一位,或者達到所要求的精度為止

例如將0.125轉為二進制:

0.125 * 2 = 0.25 ------0
0.25 * 2 = 0.5 ------0
0.5 * 2 = 1.0 ------1

當小數部分為0就可以停止乘2,然后正序排序就構成了二進制的小數部分:0.001

如果小數的整數部分有大於0的整數時,需要將整數和小數部分分別轉為二進制,再合二為一。

比如8.125轉二進制,使用8轉二進制為1000,使用0.125轉二進制為0.001,合起來就是1000.001

比如二進制轉十六進制是取四合一法、十進制轉十六進制是除16取余,然后逆序排列,所以關於其他進制的轉換這里不再敘述。

BCD碼

BCD碼(Binary-Coded Decimal‎),用4位二進制數來表示1位十進制數中的0~9這10個數碼,是一種二進制的數字編碼形式,用二進制編碼的十進制代碼。
BCD碼也稱二進碼十進數,BCD碼可分為有權碼和無權碼兩類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM