C語言之計算機基礎學習二

2022-08-23 18:48:03 字數 4420 閱讀 2805

機器數與真值

一、 機器數及其編碼

機器數就是數值在計算機中的表示形式,真值則是它在現實中的實際數值。可以這樣簡單的理解。因為計算機只能直接識別和處理用0、1兩種狀態的二進位制形式的資料,所以在計算機中無法按人們的日常書寫習慣用正、負符號加絕對值來表示數值,而與數字一樣採用二進位制**0和1來表示正、負號。

這樣在計算機中表示帶符號的數值資料時,符號和數均採用了0、1進行了**化。這種採用二進位制表示形式,連同正負符號一起**化的資料,稱為機器數或者機器碼(即,數值在計算機中的二進位制表示形式)。與機器數對應,用正、負符號加絕對值來表示的實際數值稱為真值。

根據約定機器數是否存在符號位,機器數可以分為無符號數和帶符號數。無符號數是指計算機字長的所有二進位制位均表示數值。帶符號數是指機器數分為符號位和數值兩部分,且均採用二進位制表示。

一般約定最高位表示符號。

例1-1:10011001作為無符號定點整數時,真值是153;作為帶符號定點整數時,第一位是符號位,1代表負號,二進位制數***的真值是-0011001,轉化成十進位制是-25。

對於帶符號數,根據小數點位置固定與否,又可以分為定點數和浮點數。在介紹浮點數之前我們要將注意力完全放在定點數上面,要有點耐心,對定點數的理解程度決定了我們對浮點數的理解程度,因為可以將浮點數看成是對定點數的一種應用,以後就會明白了。好了,先看一看什麼是定點數。

定點數約定所有資料的小數點位置均是相同且固定不變的。計算機中通常使用的定點數有定點小數和定點整數兩類。

定點小數:對於乙個長度為n位的機器數,定點小數約定小數點在符號位和最高數值位之間,如下

數符(最高位,占用1位).尾數(剩餘n-1位)

小數點只是乙個約定,是隱含的,不占用空間。

定點整數:對於乙個長度為n位的機器數,定點整數約定小數點在最低數值位之後,如下

數符(最高位,占用1位)尾數(剩餘n-1位).

小數點也是隱含的。

例1-2:下的八位二進位制數,我們看看它們所代表的值是多少

定點小數:1.1011001真值=-0.1011001=-0.6953125

定點整數:11011001真值=-1011001=-89

真值:127=+1111111定點整數:01111111

真值:-0.125=-0.001定點小數:1.0010000

1、 機器數與真值

機器只認識二進位制數:0、1。

這是因為,電路狀態常有兩個,如通、斷;高電平、低電平;…可用0、1表示。

這種0、1、0、1…1在機器中的表現形式——機器數。一般為8位。

無符號數:00000000b、……11111111b即00h ~ ffh

機器數有:

帶符號數:+1010110b、-1101001真值

01010110、11101001機器數

2、 機器數的編碼及運算

對帶符號數而言,有原碼、反碼、補碼之分,計算機內一般使用補碼。

1) 原碼

將數「數位化」,原數前「+」用0表示,原數前「-」用1表示,數值部分為該數本身,這樣的機器數叫原碼。

設x——原數;則[x]原 = x(x0)

x]原 = 2n-1 – x (x0),n為字長的位數。

如,[+3]原 = 00000011b

[-3]原 = 27 - (-3) = 10000011b

0有兩種表示方法:000000000

100000000

原碼最大、最小的表示:+127、-127

2) 反碼

規定正數的反碼等於原碼;負數的反碼是將原碼的數值位各位取反。

[x]反 = x (x0)

[x]反 =(2n –1)+ x (x0)

如,[+4]反 = [+4]原 = 00000100 b

[-4]反 = (28 –1)+(-4) = 11111111- 00000101 = 11111010 b

反碼範圍:-127 ~ +127

兩個0; +0 —— 00000000 b

-0 —— 11111111 b

3) 補碼

補碼的概念:現在是下午3點,手錶停在12點,可正撥3點,也可倒撥9點。即是說-9的操作可用+3來實現,在12點裡:3、-9互為補碼。

運用補碼可使減法變成加法。

規定:正數的補碼等於原碼。

負數的補碼求法:1)反碼 + 1

2)公式:[x]補 = 2n + x (x<0)

如,設x = - 0101110 b , 則[x]原 = 10101110 b

則[x]補 = [x]反 + 1 = 11010001 + 00000001 = 11010010 b

如,[+6]補 = [+6]原 = 00000110 b

[-6]補 = 28 + (-6) = 10000000 – 00000110 = 11111010 b

8位補碼的範圍 –128 ~ +127。

0 的個數:只乙個,即00000000

而10000000 b是-128的補碼。

原碼、反碼、補碼對照表:表1-2 p10

4)補碼的運算

當x≥0時,[x]補= [x]反=[x]原

[ [x]補]補 = [x]原

[x]補+ [y]補 = [ x+y ]補

[ x-y ]補= [ x+(-y)]補

例:已知 x=52 y=38 求x-y

方法1: 減法方法2: 加法

x-y = 52-38 =14x-y = [ [ x-y]補]補 = [ [x]補+[-y]補]補

0 0 1 1 0 1 0 052]補+[ -38]補]補

-) 0 0 1 0 0 1 1 014 ]補 =14

0 0 0 0 1 1 1 0

52]補: 0 0 1 1 0 1 0 0

38]補:+) 1 1 0 1 1 0 1 0

1 0 0 0 0 1 1 1 0

自然丟失

計算機在做算術運算時,必需檢查溢位,以防止發生錯誤

5)運算的溢位問題

資料字長(位數)有一定限制,所以資料的表示應有乙個範圍。

如字長8位時; 補碼範圍-128~+127

若運算結果超出這個範圍,便溢位。

例: [98]補: 0 1 1 0 0 0 1 0 [85]補: 0 1 0 1 0 1 0 1

[25]補:+)0 0 0 1 1 0 0 1 [47]補:+)0 0 1 0 1 1 1 1

[123]補: 0 1 1 1 1 0 1 1 [132]補: 1 0 0 0 0 1 0 0

未溢位 0 0溢位 0 1

cs+1 cs(未溢位cs+1 cs (溢位)

錯:兩個正數相加和為負數。

[- 85]補: 1 0 1 0 1 0 1 1 [- 19]補: 0 1 0 1 0 1 0 1

[- 47]補:+)1 1 0 1 0 0 0 1 [- 79]補:+)1 0 1 1 0 0 0 1

[- 132]補: 1 0 1 1 1 1 1 0 0 [- 98]補: 1 1 0 0 1 1 1 1 0

溢位 1 0未溢位 1 1

cs+1 cscs+1 cs

錯:兩個負數相加和為正數。

可見:結果正確(無溢位)時,cs+1 = cs

結果錯誤(溢位)時,cs+1 ≠ cs

溢位判斷:溢位 = cs+1cs(即結果是0為無溢位;1為有溢位)

3、 十進位制數的編碼

對機器:二進位制數方便,

對人 :二進位制數不直觀,習慣於十進位制數。

在程式設計過程中,有時需要採用十進位制運算,但機器不認識十進位制數。

怎麼辦?

可以將十進位制的字元用二進位制數進行編碼:

1 00009 1001

2 00011010

2 00101011

3 00111100 未用碼

4 01001101

5 01011110

6 01101111

7 0111

8 1000

這叫做二進位制數對十進位制編碼——bcd碼。

上述每4位二進位制數表示乙個十進位制字元,這4位中各位的權依次是:

8、4、2、1——8421 bcd碼。

bcd碼的運算:

例: 1 80 0 0 1 1 0 0 0

+) 3 bcd碼相加 +) 0 0 0 0 0 0 1 1

2 10 0 0 1 1 0 1 1

3 b非bcd碼(錯)怎麼辦?

需進行十進位制調整:

0 0 0 1 1 0 0 0

+) 0 0 0 0 0 0 1 1

0 0 0 1 1 0 1 1個位大於9,應進1)

0 1 1 0加6使進1)

0 0 1 0 0 0 0 1結果形如出21)

(1)bcd碼加法規則

計算機二級C語言複習

第一部分 c語言知識複習資料 第一章 c語言基本知識 考點1 c程式 用c語言編寫的程式稱為c語言源程式,源程式檔案的字尾名為 c 源程式經編譯後生成字尾名為 obj 的目標檔案,再把目標檔案與各種庫函式連線起來,生成 exe 可執行檔案。c語言有三種基本結構 順序結構 選擇結構 迴圈結構。考點2 ...

公共基礎知識之計算機試題 一

2012 07 06 17 51 作者 甘肅華圖 未知 導讀 公共基礎知識之計算機試題及答案 1.在計算機內部,用來傳送 儲存的資料或指令都是形式進行的。a a 二進位製碼 b 拼音簡碼 c 八進位製碼 d 五筆字體碼 2 計算機能夠直接識別和處理的語言是 c a 組合語言 b 自然語言 c 機器語...

計算機二級考試C語言全

第一章資料結構與演算法 1.1 演算法 1 是指解題方 而完整的描述。換句話說,演算法是對特定問題求解步驟的一種描述。演算法不等於程式,也不等於計算方法。程式的編制不可能優於演算法的設計。2 演算法的基本特徵 1 可行性。針對實際問題而設計的演算法,執行後能夠得到滿意的結果。2 確定性。每一條指令的...