数据表达1
Table of Contents
─────────────────
1 符号加绝对值整数的加减法
.. 1.1 减法运算
.. 1.2 加法运算
2 上溢和下溢的问题
.. 2.1 上溢
.. 2.2 下溢
1 符号加绝对值整数的加减法
══════════════════════════
1.1 减法运算
──────
设 |a| > |b| c = a - b, |c| <= |a|
所以在减法中 差的最大值为 两数中的最大值
所以没有上溢的情况出现
1.2 加法运算
──────
设|a| > |b| c = a + b, |c| <= 2|a|
所以 两数的和可能是 两数中最大绝对值的两倍 可能会导致上溢的情况.
2 上溢和下溢的问题
══════════════════
上溢一般发生在加法运算中.下溢一般发生在除法运算中.所以解析以加法和除法
为例
设 浮点数
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
情形 符号 指数 尾数 位数
上溢 1 1111 1111 9
下溢 1 0000 0001 9
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2.1 上溢
────
以上为例 上溢情形中的数为最大值 设置占位为9
当 最大数加1时 尾数为 1111 + 1 = 10000
应该在指数上加上一位 1111 + 1 = 10000
导致 符号位 1 + 1 = 10
这样一来 已经超出了该位数能表达的数值的极限.
• 猜想:
由于我没有找到关于上级缓冲区的资料.因此我猜想.当最大值+1时. 整个数值变
成10位 在位置上需要*向左挪一位*, 可能是样导致了在最高位的左边写入了一
个1.
• 百度百科资料:
当一个超长的的数据写入到缓冲区时, 超出的部分被写入上级缓冲区,上级缓冲
区可能存放数据,上条指令的指针,或其他程序的输出内容.
2.2 下溢
────
数值还是以列表为例.
当数值 \2时, 因为数值已经是最小了. 如果要除以2 通常这个操作会减小指数.但
是我们已经假设指数为最小值了所以计算机只好尾数*向右移动一位*, 空出一个
二进制位,并丢弃最后一个二进制数.
• 猜想:
在百度百科中 也提到了下级缓冲区的概念.我猜想是*向右移一位*占用了下一个
位的位置.
浙公网安备 33010602011771号