补数/补码的意义

原创 2016年08月30日 15:49:40

前言

之前在大学的数字电子技术这门课程学到这个概念,但一直没有应用过,最多就是做过课后作业。本人目前做的是工控行业,工控就离不开电机的控制,工控行业里常见的三种控制方案,一是PLC,二是运动控制卡,三是单片机,我做的是的单片机这一块,众所周知定时器是单片机的基础外设,而行业内对使用单片机对电机进行控制,往往用的是定时器。使用定时器对电机控制的方式有溢出中断的方式,还有就是比较中断的方式,这里使用的是比较中断的方式,又因为电机的加减速表是用软件自动生成的,生成的表为升序表,升序表很显然不能用比较中断的方式进行控制,否则电机得运动就变成先减速后匀速然后又加速,显然不是我们需要的,我们需要的电机运动过程是先加速后匀速最后减速这么一个过程。如果我们能把升序表变成降序表,问题不就解决了吗?对,没错。那有什么方法呢?我们分析了一下电机的运动过程,如果能按照逆方向运行,那就是我们想要的了,于是想起了钟表的运行,当前指针指向6点钟方向,要指向3点钟方向,我们可以顺时针转过9格,也可以逆时针转过3格,这也是补码的一个典型特点,于是就联想到了补码。通过补码我们就可以把整数把大化小,把小化大,这样就能把升序表变成降序表了,于是问题就迎刃而解了。下面我们来讲下关于补数的基本知识。

补数是一种处理有符号数的方法,用于变换数字的符号。常在计算机科学中应用,被称为【补码】,在台湾和香港被称作二补数。

关于补码
补数在计算机中被成为补码(在港台被称为二补数)
有符号的二进制数的补码运算方法为:
正数:补码为其本身
负数:除符号位外,所有位取反(即原码的反码),然后+1(简称为求反加一)。
如:-1101 的补码为
1. -1101的原码为 11101(第一位为符号位)
-1101的反码为 10010(第一位为符号位)
-1101的补码为 10011(第一位为符号位)
整数的补码定义
[x]补={ 0,x|( 2^n >x >=0)}和{ 2^(n+1)+x|(0>x>=-2^n)(mod 2^(n+1))

 

计算机科学中的应用

计算机科学中,补数的最大应用点为,在处理加法和减法中,不会因为数字的正负使用不同的计算方式。只要一种加法电路就可以处理各种有符号数加法,而且减法可以用一个数加上另一个数的补数来表示,因此只要有加法电路及补数电路即可完成各种有符号数的加法及减法,电路设计上相当方便。

 

补数的概念
在日常生活中,常常会遇到补数的概念,例如时钟指示为六点,想要它指向三点,可以按顺时针方向将分针转九圈,也可以逆时针方向转三圈,结果是一致的。由于时针转一圈为12小时,而其中12在时钟里是不被显示而自动丢失的,即15-12=3,15点和三点在时钟表示上是一致的。想想一下,在时钟这个问题上,任何时候时针向顺时针转九圈和逆时针转三圈的效果都是一致的,我们将方向定位正负,即-3与+9等价。而数学上称12为模写作(mod 12),而称+9是-3以12为模的补数记为
-3  +9(mod 12)
-4  +8(mod 12)
-5  +7(mod 12)
【以上截取自《计算机组成原理·第二版》唐朔飞著p221】
可以将模理解为一个足够大的正数,足够大到比你运算所有数字的绝对值都要大。


结论:(在模确定的情况下)
一个负数可用它的正补数来代替,而这个正补数可以用模加上负数本身来得到。
一个正数和一个负数互为补数时,两数的绝对值之和为模
正数的补数为其自身。

版权声明:本文为博主原创文章,未经博主允许不得转载。

补码的意义

计算机中CPU内运算器应该是用ACC来完成加减法运算的。但是Accumulator怎么完成减法运算呢?唐朔飞的教材中这样描述了补码的诞生。        为了用ACC计算加减法,那么对真值进行了分类,...
  • Cattells
  • Cattells
  • 2017年06月23日 11:25
  • 496

原码、反码与补码及其意义

原文地址:http://blog.chinaunix.net/uid-495923-id-1989253.html 原码、反码与补码及其意义  (1)数值数据的表示  我们把一个数在计算...
  • flycct
  • flycct
  • 2016年01月24日 14:59
  • 961

论补数和补码的关系

我们都知道,补数 引申到 计算机中 就是 补码的概念, 可是 为什么呢? 我们先来 看看 各自的 定义…… 补数: 在日常生活中,常常会遇到补数的概念。例如,时钟指示为6点,欲使它指示3点,既可按顺时...
  • huangqiang1363
  • huangqiang1363
  • 2016年12月04日 14:32
  • 1367

原码、补数、补码以及计算机中为什么用补码存储

原码:最左侧一位表示符号,且0表示正数,1表示负数;二进制转换为十进制时,符号位只用于取正负号,不参与转化。 例如1个字节的二进制: 0000 0001表示十进制的1; 0000 1010表示十进制的...
  • yinzhijiezhan
  • yinzhijiezhan
  • 2015年09月13日 19:16
  • 783

对计算机的原码,反码,补码的理解:

计算机为什么要有原码,反码,补码的? :为了解决计算机负数表示与运算问题而引人了反码和补码。 现在的计算机,只能识别1和0。所以计算机的内部运算采用的都是二进制的运算。那么二进制中的数字中,如何表...
  • u011266694
  • u011266694
  • 2016年10月19日 10:20
  • 589

原码,反码,补码及移码存在的意义是什么?

  原码,反码,补码及移码存在的意义是什么? 反码的意义及作用有哪些? 移码与补码的关系是什么? 数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制...
  • cumt168
  • cumt168
  • 2008年11月27日 17:06
  • 1778

如何求一个数的补数

发现了一个问题自己还不是很懂,就是说如何求一个数的补数,举个例子,比如5,二进制是101,那么它的补数就应该是010就是2。   你可能会问了,这不是很简单吗?取反就行了啊,~5就行,事实上是这样子...
  • u012351768
  • u012351768
  • 2017年07月28日 21:46
  • 587

CSI-II:信息的表示与处理-数值陷阱(一)

CSI:信息的表示与处理-数值陷阱(一)   前言          在程序中,我们经常会涉及到数值计算操作,比如从最简单的数值的表示,到加、减、乘除,再到移位等等,而对于这些往往我们都信心十足...
  • u012960981
  • u012960981
  • 2014年04月09日 09:56
  • 863

补数的概念和取模运算

补数的概念和模运算
  • dream_follower
  • dream_follower
  • 2017年04月06日 14:59
  • 259

补码存在的意义

数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制,而在日常生活中人们使用的是十进制,"正如亚里士多德早就指出的那样,今天十进制的广泛采用,只不过我们绝大多数人生来具有10个手指头这...
  • wewe125
  • wewe125
  • 2017年03月13日 09:04
  • 78
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:补数/补码的意义
举报原因:
原因补充:

(最多只允许输入30个字)