2 2 定點數的表示和運算

2021-09-26 07:01:53 字數 1891 閱讀 7011

定點數的表示 1 無符號數,若機器字長是8位,則表示的資料範圍是0~255

2 有符號數,通過「0」表示正號,「1」表示符號,來表示資料。有符號數的機器表示有原碼,反碼,補碼,移碼。

定點表示,機器數中的小數點位置是固定不變的,小數點不再使用「。」表示,而是約定它的位置。這裡有兩種簡單的約定,將小數點的位置固定在資料的最高位之前,或固定在最低位之後。一般稱前者為定點小數後者為定點整數

原碼[+0]原=00000和[-0]原=10000

補碼正數的補碼和原碼相同。負數是,原碼符號位不變,數值部分按位取反,末位加1.真值零的補碼表示唯一,[+0]補和[-0]補=0.0000

反碼[+0]反=0.0000和[-0]反1.1111

移碼因為補碼不能直觀的看出數之間的大小關係所以引入了移碼,移碼就是在真值x上加上乙個常數(偏置值),通常這個常數取

定點數的算術移位

物件是有符號數,在移位過程中符號位保持不變。

定點數的邏輯移位

不管是左移還是右移,都填0

迴圈移位

[-b]補的求法是[b]補連同符號位一起取反加1(無論正,負)

符號擴充套件,比如在將8位數和32位數相加之前,必須將8位數轉換成32位數的形式。

正數,原有形式的符號位移動到新形式的符號位上,新表示形式的所有附加位都用0填充。

負數,原碼表示負數的符號擴充套件方法與正數相同。補碼是,原有形式的符號位移動到新形式的符號位上,新表示形式的所有附加位都用1(對於整數)或0(對於小數)進行填充。反碼,原有形式的符號位移動到新形式的符號位上,新表示形式的所有附加位都用1填充。

溢位的判斷

1> 採用一位符號位

設a的符號為as,b的符號為bs,運算結果的符號為ss

若v=0,表示無溢位,v=1,表示有溢位

2> 採用雙符號位

雙符號位法也稱模4補碼。這裡設定兩個符號位。s1和s2。

s1s2=00,表示結果為正數,無溢位。

s1s2=01,表示結果為正溢位。

s1s2=10,表示結果負溢位。

s1s2=11,表示結果為負數,無溢位。

3> 採用一位符號位根據資料位的進製情況判斷溢位

若符號位的進製cs與最高位的進製c1相同,則說明沒有溢位,否則表示發生溢位。

定點數的乘法

1> 原碼一位乘法

特點是符號位與數值位分開求

2> 補碼一位乘法(booth演算法)

是一種有符號數的乘法

定點數的除法

1> 原碼除法運算(不恢復餘數法)

商符和商值分開。

2> 補碼除法運算(加減交替法)

符號位和數值位一起參與運算

強制型別轉換

相同型別的有符號數向無符號數轉換或者無符號數向有符號數轉換,儲存位值不變,僅改變解釋這些位的方式。

當大位元組變數向小位元組變數強制型別轉換時,系統把多餘的高位字長部分直接截斷,低位直接賦值。

短字長到長字長轉換,在位值相等的條件下補充高位的符號位,類似符號擴充套件。

2 2定點數的表示與運算

n位的無符號數表示範圍為 0 2n 1 原碼 用尾數表示真值的絕對值,符號位 0 1 對應 正 負 若機器字長n 1位,原碼整數的表示範圍 2n 1 2n 1 若機器字長n 1位,原碼小數的表示範圍 1 2 n 1 2 n 反碼 若符號位為0,則反碼與原碼相同 若符號位為1,則數值位全部取反 若機器...

定點數的表示

計算機中常用的資料表示格式有兩種,一是定點格式,二是浮點格式。所謂定點數和浮點數,是指在計算機中乙個數的小數點的位置是固定的還是浮動的 如果乙個數中小數點的位置是固定的,則為定點數 如果乙個數中小數點的位置是浮動的,則為浮點數。一般來說,定點格式可表示的數值的範圍有限,但要求的處理硬體比較簡單。而浮...

定點數和浮點數 C Qt系列之定點數的表示

又是很久沒更新了,書接上文,上次談到計算機中數值的表示方式包括定點和浮點,並留了乙個關於定點數表示的懸念,本次將繼續介紹。定點數在計算機中主要表示方式有三種 原碼 補碼和反碼。另外為了方便階碼的運算,還定義了移碼。1 原碼用真實的二進位制值表示數值的編碼叫原碼。原碼表示法在數值前面增加了一位符號位,...