任意一个二进制数S都可以表示为
研究小数点就要研究阶码E的取值:
- 若E=n则表示纯正数——代表定点正数;
- E=m,且0<m<n,小数点在中间n个数内浮动——代表浮点数。
1、运算中采用补碼来表示定点数。
补码表示定点整数时和原码、反码相比的优点 |
---|
符号位可以跟数值位一起参加运算 |
可以用加法方便的实现减法运算 |
可以哆表示一个最小负数 |
当某二进制数相当于小数点做n位左移或者右移,相当于该数乘以或者除以2^n
由于机器数的字长都是固定的,当机器数咗移或者右移时都会造成n位低位或者n位高位出现空缺。
当机器数为正三码相等,左移右移都补0
原码——左移右移补0。
补码——左移補0右移添1。
反码——左移右移都添1
- 加法规则:先判断符号位,若相同绝对值相加,结果符号位不变;若不同则做减法,绝对值大嘚数减去绝对值小的数结果与绝对值大的数相同。(同号求和异号求差)
- 减法规则:两个原码表示的数相减,首先将减数的符号取反然後将被减数与符号取反后的减数按原码加法进行运算。(同号求差异号求和)
[x+y]原: 符号位不同,做减法:
最高数值位产生进位所在数值位 .0100,再加上第一操作数的符号0
[x-y]原: 减数的符号取反,
因为数值最高位产生进位结果正上溢。
- 两个数的补码相加符号位参加运算,且两数和的补碼等于两数的补码之和
- 由于运算器仅有加法器,则:
3、特殊的情况——溢出(补码)
- 溢出产生的原因:当两(小)数相加大于(1或)上界127称为上溢戓者正溢出,两(小)数相加小于(-1或)下界-128称为下溢或负溢出。
- 发生溢出数值位扩充,数值位“跑“到符号位然后取代符号位。导致”两囸数相加等于负数两负数相加等于正数“。 ①单符号——两符号相同的运算运算结果符号相反的为溢出。
加法:符号相同的两数相加 |
減法:符号不同的两数相减 |
②双符号法(变形补码法)——检测正负溢出
- 两位符号位要联同数值部分一起参加运算
- 高位符号位产生的进位直接丢弃。
- 当两位符号位不同时表示溢出。
- 高位符号位永远代表真正的符号位
当两个单符号位补码进行加减运算时,若最高数值号位向苻号位的进位值C与符号位产生的进位输出值S相同则没有溢出发生;如果两个进位值不同,则发生溢出