打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于补码运算的一点看法

这两天数电课说了补码这个概念,可是为什么补码可以代替负数做运算,书上没有说清楚,按位取反再加一的原因书上也没说太清楚,在这里我说一点我的看法。

  首先说一下模的概念,对于范围是【0,m-1】的整数计量单位,其模为M,和为M的两个数互为补数,就像时钟,计量单位是[0,11],那么模就是12,7与5就互为补数。

      如果两个整数,a,b∈【0,m-1】,那么,定义一个映射f,

    使f(a-b)=f(a+c),   其中,c=m-b,是b的补码,       f定义为

   当0≤x<m时,f[x]=x;

   当x≥m时,f【x】=x%M(此处为模运算,学过C的应当知道);

   当x<0时,f[x]=f(m-(-x)%m)……… 此处是为了保证自变量为正数;

    这三个公式可以由计算机原理的溢出来隐式实现,于是天生就有  a-b=a+c  ,所以减运算变成了加运算,于是计算机把-b表示成了补码c;

     现在说一说取反加一的问题,假设计算机上的机器字有n位,那么就有m=2n,所以c=2n-b,人在纸上怎么计算c=2n-b的值呢,是这样的:  的原码是1后面跟n个0,直接用来减b的原码不方便,于是就先用2n-1(n个1)减b的原码,得到的结果再加上一就是2n-b的值,这就是计算机类书籍上说的“取反加一”

数学中的整数相加,仍然是一个整数,但是一个集合内的两个整数相加,却不能保证还在这个集合内,用代数的术语来讲,叫做 "不满足封闭性",这是个很坏的性质,而补码的提出就是为了用封闭的运算来解决这个问题,

   当然,这都是个人理解,欢迎指正,顺带说一句,这是我和谢奇同学的讨论结果。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
数值表示与位运算一点笔记
为什么计算机用补码存储数据?
原码、反码和补码
分享:负数的二进制编码——越是基础的越是要掌握
程序员应该了解的计算机知识(三)——信息表示和编码
什么是补码?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服