2.2.2 定点数的运算(移位、原码和补码的加减乘除、溢出概念和判别方法)
生活随笔
收集整理的這篇文章主要介紹了
2.2.2 定点数的运算(移位、原码和补码的加减乘除、溢出概念和判别方法)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄:
- 1.定點數移位運算
- (1)算術移位
- (2)邏輯移位
- (3)* 循環移位
- 2.定點數加減法運算
- (1)原碼加減
- (2)補碼加減
- 為什么機器中使用補碼運算呢?
- 3.符號擴展
- (1)正數符號擴展
- (2)負數符號擴展
- 4.溢出概念和判別方法
- (1)采用一位符號位
- (2)采用雙符號位
- 5.定點數乘法運算
- (1)原碼一位乘法
- (2)補碼一位乘法(Booth算法)
- (3)乘法運算總結表
- 6.定點數除法運算
- (1)原碼除法運算(不恢復余數法)
- (2)補碼除法運算(加減交替法)
- (3)除法運算總結表
1.定點數移位運算
- 移位運算:根據操作對象不同分為算術移位和邏輯移位
- 算術移位:有符號數的移位
- 邏輯移位:操作對象是邏輯代碼,可視為無符號數
(1)算術移位
- 算術移位規則如下(未溢出、未移出)
(2)邏輯移位
- 移位規則:左移右移都是添0
(3)* 循環移位
- 循環移位:分為帶進位(CF)和不帶進位的循環移位
- 循環移位特點:移出的數據又被移入到數據中
- 循環移位的應用:特別適合將數據的低字節和高子節數據互換
- 移位規則見圖:
2.定點數加減法運算
(1)原碼加減
- 加法:絕對值相加,符號位不變;
- 減法:絕對值大的減絕對值小的數,結果的符號位與絕對值大的數相同。
- 這里的加法運算,其實當兩個數符號位不同時就按減法規則算。
- 注意:運算時超出字長,則左邊溢出位丟掉。
(2)補碼加減
為什么機器中使用補碼運算呢?
- 因為補碼統一了符號位和數值位,,加法和減法也可以統一處理,只需要加法器,不需要減法器,節省元件,簡化了運算器的設計,提高效率。
- 注意:符號位與數值為一起計算,符號位產生的進位丟掉,結果的符號位數值由運算得出。
- 一題搞懂:
3.符號擴展
- 符號擴展:有時需要把兩種不同位數的數相加,那么就需要統一他們的位數,比如8位和16位數相加,要想得到正確的結果,必須把8位數轉換成16位數形式。
(1)正數符號擴展
- 原碼=補碼=反碼:比如8位轉16位:+12(10) = 0000 1100 , 轉換成16位則為:0000 0000 0000 1100
- 符號位為0,附加為都用0補充
(2)負數符號擴展
比如8位轉16位:-12 (10) = 1000 1100
- 原碼:擴展方法與正數符號擴展相同,只不過最高位符號位變為1, 1000 0000 0000 1100
- 補碼:附加位補充1,符號位為1,1111 1111 1111 1100
- 反碼:附加位補充1,符號位為1,1111 1111 1111 1100
4.溢出概念和判別方法
- 溢出:指參加運算的兩個數,相加或相減,運算結果超過了機器字長所能表示的范圍
- 正溢出:運算結果大于機器字長所能表示的最大正數
- 負溢出:運算結果小于機器字長所能表示的最小負數
(1)采用一位符號位
- 設A的符號位As,B的符號位s,運算結果符號位Ss , 則溢出邏輯表達式:
- 若V=0,表示無溢出
- 若v=1,表示有溢出
(2)采用雙符號位
- 采用雙符號位比如 S1S2,S1S2相同則不溢出;S1S2不同則溢出,此時最高位代表正確的符號
- ① S1S2 = 00:結果為正數,無溢出
- ② S1S2 = 01:結果正溢出
- ③ S1S2 = 10:結果負溢出
- ④ S1S2 = 11:結果為負數,無溢出
5.定點數乘法運算
(1)原碼一位乘法
- 運算細則:
- 一題搞懂原碼一位乘法
(2)補碼一位乘法(Booth算法)
- 一種有符號的乘法,采取相加和相減操作計算補碼數據的乘積。
- 運算規則:
- 一題搞懂補碼一位乘法
(3)乘法運算總結表
6.定點數除法運算
- 在計算機中,除法運算可轉換成“累加-左移”(邏輯左移);
(1)原碼除法運算(不恢復余數法)
- 采用方法:原碼不恢復余數法,也稱原碼加減交替除法;符號位和數值單獨處理;
假設除數[X]原=xs.x1x2……xn , 除數[Y]原=ys.y1y2……yn ,計算|X|/|Y|
- 運算規則:
(1). 余數為正數時,夠減,商上1,余數左移一位,再與除數做減法比較
(2). 余數為負數時,不夠減,商上0,加除數恢復成原來的值,將余數左移一位,再與除數做減法比較
- 一題搞懂:
(2)補碼除法運算(加減交替法)
- 符號位與數值位一起參加運算
- 除法第一步根據被除數和除數的符號決定是做加法還是減法
- 上商的原則根據余數和除數的符號位共同決定,同號上1,異號上0,簡單規律就是,夠減上1,不夠減上0
- 最后一步商恒置為‘1’
- 運算規則:
一題搞懂:
(3)除法運算總結表
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的2.2.2 定点数的运算(移位、原码和补码的加减乘除、溢出概念和判别方法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.2.1 定点数的表示(无符号与有符号
- 下一篇: 2.2.3 C语言中的整数类型及类型转换