進製及數值資料的編碼

2021-10-22 17:33:13 字數 996 閱讀 8618

某一進製數的大小由係數項和權的乘積決定

機器數和真值

實際運算中,數是有正負的,計算機中數也有正負,通過用乙個數的最高位表示符號,如果字長為8位,分別為d7 ~ d0,那麼d7為符號位,0表示正數,1表示負數,d6 ~ d0為數值位

例如:11010111 = -87

這樣,在計算機中,連同符號一起數位化的數,就被稱為機器數, 如上面的11010111;而使用正負號加其絕對值的表示方法,稱為該數的真值,如 -87

原碼是指將最高位作為符號位(0表示正,1表示負),其它數字位代表數值本身的絕對值的數字表示方式

以上是在8位計算機中的原碼表示,如果在32位或16位計算機中, 表示方法是一樣的,只是多了幾個0而已

有了數值的表示方法就可以對數進行算數運算,但是很快就發現 用帶符號位的原碼進行乘除運算時結果正確,而在加減運算的時 候回出現問題,如下:

反碼表示規則為:如果是正數,則表示方法和原碼一樣,如果是 負數,則保留符號位1,然後將這個數字的原碼按照每位取反, 則得到這個數的反碼表示形式

因為在兩個正數的加法運算中是沒有問題的,於是就發現問題出現在帶符號位的負數身上,對除符號位外的其餘各位逐位取反就產生了反碼,反碼的取值空間和原碼相同且一一對應,下面是反碼的減法運算:

問題出現在(+0)和(-0)上,在人們的計算概念中 0 是沒有正負之分的

於是就引入了補碼的概念,負數的補碼就是對反碼加一,而正數 不變,正數的原碼反碼補碼都是一樣的,在補碼中用(-128)代替 了(-0),所以補碼的表示範圍為:(-128 ~ 0 ~ 127),共256個

補碼是計算機表示資料的一般方式,其規則為:如果是正數,則 表示方法和原碼一樣,如果是負數,則將數字的反碼加上1(相當於將原碼數值按位取反然後在對地位加1)

注意: (-128)沒有相對應的原碼和反碼,(-128)=(10000000)的補碼的加減運算如下:

所以補碼的設計目的是:

所有這些轉換都是在計算機的最底層進行的,而在我們使用的彙編、c等其他高階語言中使用的都是原碼。

預習非數值資料的編碼方式

1 邏輯值 邏輯資料和數值資料都是一串0 1序列,在形式上無任何差異,需要通過指令的操作碼型別來識別它們。2 字元 字元不能直接在計算機內部進行處理,因而也必須對其進行數位化編碼,字符集中每乙個字元都有乙個 構成了該字符集的 表,簡稱碼表。碼表中的 具有唯一性。用西文字元表示 由拉丁字母,數字,標點...

預習非數值資料的編碼方式

非數值資料的編碼表示 1.邏輯值 n位二進位制數可表示n個邏輯值。邏輯資料只能參加邏輯運算,並且是按位進行的,如按位 與 按位 或 邏輯左移,邏輯右移等。邏輯運算指令處理的是邏輯資料,算術運算指令處理的是數值資料。2.西文字元 西文由拉丁字母,數字,標點符號及一些特殊符號所組成,它們統稱為字元。所有...

預習非數值資料的編碼方式

正常情況下,每個字或其他可定址單位 位元組半字等 是作為乙個整體資料單元看待的。但是,某些時候還需要將乙個,位數掘看成由n個1位資料組成,每個取值為0或1.例如,有時需要儲存乙個布林或二講制資料陣列.陣列中的每項只能取值為1或0 有時可能需要提取乙個資料項中的某位進行諸如 置位 或 清零 等操作。當...