一.定点数的表示
一.无符号数
无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。
表示范围:n位的二进制数,有2^n种不同状态,范围是0 ~ 2^n-1
二.有符号数
一.定点表示
二.原码
三.补码
四.反码
五.原补反相互转换
六.移码
真值转移码:
移码就是在真值X上加上一个常数(偏置值),通常这个常数取2^n
[X]移 = 2^n + x
x1=+10101,x2=-10101,字长为8位,则其移码表示为:
[X1]移 = 2^7 + 10101 = 1 000 0000 + 10101 = 10010101
[X2]移 = 2^7 + (-10101) = 1 000 0000 + (-10101) = 01101011
移码转真码:
移码0111 1110的真值:
转换成无符号数真值:126
减去偏置值1000 0000对应的无符号数真值128得到移码真值:126-128=-2
或者,0111 1110 -1000 0000=1111 1110对应补码真值-2
七.负数实例
负数二进制11110110转化成十进制数,原码->反码(取反)->补码(加1):
- 11110110逐位取反为:00001001
- 二进制数+1得:00001010
- 转化为十进制加负号:-10
负数十进制数-10转化为二进制,补码->反码(补码-1)->原码(反码取反):
- 掉负号的原码为:0000 1010
- 取反得到反码:1111 0101
- 反码加1得到补码:1111 0110
二.定点数的运算
一.位移
一.逻辑移位
二.算数移位
三.循环位移
二.加减运算
一.基本操作
二.溢出问题
三.乘法运算
一.原码一位乘法
原码一位乘法(机器字长n+1,数值部分占n位):
- 符号位通过异或确定;
- 数值部分通过被乘数和乘数绝对值的n轮质法、移位完成根据当前乘数中参与运算的位确定(ACC)加什么。若当前运算位=1,则(ACC)+[ |X| ]原;若=0,则(ACC)+0。
- 每轮加法后ACC、MQ的内容统一逻辑右移
二.补码一位乘法
补码的算数右移:符号位不动,数值位右移,正数右移补0,负数右移补1(符号位是啥就补啥)
四.除法运算
一.原码恢复余数法
符号位:x ⨁ \bigoplus ⨁y
二.原码加减交替法
不恢复余数法:被除数减去除数,即|x|+[-|y|]补,
若结果为正,商1,左移,再减去除数;
若结果为负,商0,左移,再加上除数。
加/减n+1次,每次加减确定一位商;左移n次(最后一次加减完不移位)最终可能还要再多一次加