计算机中的数值表示

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS29pdG8tWXV1,size_20,color_FFFFFF,t_70,g_se,x_16

 原码

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS29pdG8tWXV1,size_20,color_FFFFFF,t_70,g_se,x_16

 移码

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS29pdG8tWXV1,size_20,color_FFFFFF,t_70,g_se,x_16

  • 移码通常用来表示指数(阶码),这样便于浮点数加减运算时的对阶操作(比较大小)

补码

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS29pdG8tWXV1,size_20,color_FFFFFF,t_70,g_se,x_16

  • 一个负数的补码等于模减去该负数的绝对值
  • 对于一个确定的模,某数减去小于模的另一数,总可以用该数加上另一负数的补码来代替。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS29pdG8tWXV1,size_20,color_FFFFFF,t_70,g_se,x_16

在4位十进制模运算系统中9828-1928可以转换为9828加-1928的补码,各位取反,末尾加1,即8072,加上后取模即可。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS29pdG8tWXV1,size_20,color_FFFFFF,t_70,g_se,x_16

  • 一个负数的补码等于其绝对值补码各位取反,最低位加1
  • 对于正数来说,它的补码是它本身加上模后取模,结果是它本身

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS29pdG8tWXV1,size_20,color_FFFFFF,t_70,g_se,x_16

  •  X是真值,[X]补是机器数
  • 机器数:一个数在计算机中的二进制表示形式,机器数是带符号的,在计算机中用最高位来表示,正0负1
  • 真值:机器数对应的真正数值,因为第一位是符号位,所以机器数不等于真正的数值

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS29pdG8tWXV1,size_20,color_FFFFFF,t_70,g_se,x_16

若有n位机器数则

  • -2^n-1的补码第一位(符号位)为1,其余位全部为0,图中的字迹用的方法是模减去该负数的绝对值
  • -1的补码所有位都是1
  • 0的补码所有位都是1

变形补码

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAS29pdG8tWXV1,size_20,color_FFFFFF,t_70,g_se,x_16

  • 变形补码,拿4位二进制数来说,最高位是符号位,数值位是三位,当表示8时会发生溢出。变形补码采用双符号位,存放可能的溢出结果所以可以容许这种错误,可以表示8了
  • 通常在机器中用变形补码来存放中间结果这样就算溢出也没有关系,保证最终结果的容错率
  • 中间结果:与最终结果相对,也是由计算机产生的结果,是最终结果之前的各种小运算的结果。中间结果是仅供计算最终结果使用,不需要输出,但要在计算机中暂存,一般用寄存器储存
  • 最终结果:最终结果是最终输出给用户的结果

个人理解:对于一个确定的模,某数减去小于模的另一数,总可以用该数加上负数的补码来代替,而一个负数的补码等于模减去该负数的绝对值。4位二进制能表示的真值范围为0~15,能表示的机器数范围是-8~7(第一位用作符号位),0~7的补码都是原码,和真值的二进制表示相同,而负数的补码是数值位取反加1,这实际上是个映射行为,0~7的机器数0000~0111是没问题的,如果4位二进制数正常表示,不考虑计算、符号位等因素,可以表示0~15(0000~1111),而-1~-8的正好对应了8~15的二进制真值,-8对应8,-1对应15,加减运算实际上对应了模16系统的运算,7-6=7+[6]补=0111+1010=0001,正对应这模16中的7-6=7+10,对-6(1110)数值位按位取反,得到1001,对应的是9,所以还要再加1,也可以用模减去负数绝对值这个方法求得(个人感觉这个方法更贴合原理,按位取反的方法最简单粗暴但也比较抽象)。所以求补码的过程实际上就是一个映射的过程,将负数映射到特定模中与之相对应的正数上,将减操作等效转换成对相对应的正数的加操作。(OS:还是没有把自己的理解完整表达出来,就这样吧 )

10cb67b26e904a04a1664bdf73dfe32d.gif

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值