运算方法与运算器

定点数运算及溢出检测

定点数加法运算

批注 2020-01-11 152715

定点数减法运算

批注 2020-01-11 152742

溢出

溢出:运算结果超出了某种数据类型的表示范围

溢出只可能发生在同符号数相加时

方法1:对操作数和运算结果的符号位进行检测,当结果的符号位与操作数的符号不相同时就表明发生了溢出

方法2:对最高数据位进位和符号进位进行检测

方法3:用变型补码

int tadd_ok(int x,int y) {
   int sum=x+y;
   int neg_over=x<0&&y<0&&sum>=0;
   int pos_over=x>=0&&y>=0&&sum<0;
   return !neg_over&&!pos_over; 
}

原码一位乘法

移位操作

数据整体左移一位,最低位补0

操作与逻辑左移一样,但是意义是等于数据乘2

数据整体右移一位,最高位补0,最低位被移出

数据整体右移一位,最高位被复制填补 ,最低位被移出

相当于除2

乘法

批注 2020-01-12 100000

补码一位乘法

批注 2020-01-13 132902

乘法器

批注 2020-01-13 133840

定点数除法