计算机原理基础-原反补

15人阅读 评论(0) 收藏 举报
分类:

为什么会需要原反补码

加法器计算机里面,只有加法器,没有减法器,所有的减法运算,都必须用加法进行。通过被减数的补码代替被减数,可以把减法转变为加法运算。

对补码的规定

正数的原反补码均不变。
对负数而言,把该数绝对值的补码按位取反,然后对整个数+1,即得该数的补码。

##############
## eg: 正数-正数
##############
    x=42
     =00101010
    y=21
     =00010101
    x-y
     =00101010-00010101
     =00101010+(11101010+1)
     =00101010+11101011
     =00010101
     =y
## 笔算:
     00101010
-    00010101
—————————————
     00010101

##############
## eg2: 正数-负数
##############
    x=42
     =00101010
    y=-21
     =11101011
    x-y
     =00101010-11101011
     =00101010+00010101
     =00111111
     =63
## 笔算:
     00101010
-    11101011
—————————————
     00111111

什么是模

一个负整数(或原码)与其补数(或补码)相加,和为模。
求负数补码可用另一方法:[x]补 =|x|+模
二进制下,有多少位数参加运算,模就是在 1 的后面加上多少个 0。
例如:8位二进制情况下,其模为 2^8=256=100000000
出现的进位就是模,此时的进位,就应该忽略不计。
补码就是按照这个要求来定义的:正数不变,负数即用模减去绝对值。
补码的方式也避免了0有两种表示方式。

模、补数在日常生活当中,可以看到很多这样的事情:
把某物体左转90度,和右转270度,在不考虑圈数的条件下,最终的效果是相同的;
把分针倒拨20分钟,和正拨40分钟,在不考虑时针的条件下,效果也是相同的;
把数字87,减去25,和加上75,在不考虑百位数的条件下,效果也是相同的;
…。
上述几组数字,有这样的关系:90+270=360、20+40=60、25+75=100式中的360、60和100,就是”模”(也可以理解成”进制”)。式中的90和270、20和40,以及25和75,就是一对对”互补”的数字。知道了”模”,求某个数字的”补数”,就是轻而易举的了:如果模为365,数字120的补数为:365-120=245。

补码的加减法依据

补码的加法运算所依据的基本关系为:
[x]补+ [y]补= [x+y]补
补码减法所依据的基本关系式:
[x-y]补 =[x+(-y)]补= [x]补+ [-y]补

数0的补码表示是唯一的。

[+0]补=[+0]反=[+0]原=00000000
[ -0]补=11111111+1=00000000

x位二进制数可以表示的二进制数范围

x位二进制数:原码是最高位为符号位,其他位表示此数的绝对值的二进制数值,反码是除了符号位的反码表示,补码是反码加1。
假设:
x为8,则原码范围是从01111111~10000000 ,即127~-128反码范围是01111111~100000000 (正数的反码和补码和原码相同),补码范围是01111111~11111111,关键数值点是-1、-127、-128。首先正数不管,因为反码原码补码都相同。看-1:原码10000001,反码11111110,补码是11111111;-127:原码11111111,反码10000000,补码是10000001;-128不能用正常的原码反码表示,但是可以这么想-128=-127-1,所以补码是10000001-1=10000000。所以范围是01111111~10000000,其他位数的表示范围算法也是一样的。


未完待续

查看评论

补基础之shell和Makefile-2.2.uboot和系统移植第2部分

-
  • 1970年01月01日 08:00

各种数制转换与原、反、补、移码

二、八、十、十六进制的相互转化 四种进制的转化有六种转化,
  • woshi512
  • woshi512
  • 2014-02-24 17:24:25
  • 1256

计算机基础之二进制与原反补

在计算机程序中,数值运算是基于二进制的我们最常见的进制其实就是我们在生活中用的最多的十进制,除了十进制,还有二进制,八进制,十六进制,所谓进制其实就是计数的一种方式,十进制就是逢十进一,其它进制也是类...
  • weixin_38701432
  • weixin_38701432
  • 2018-03-07 18:41:30
  • 74

java之原反补

原码,反码,补码是java数值运算的基础,在计算机程序中,数值运算是基于二进制的,也就是说底层是二进制运算.而数值有正数与负数,二进制只有0和1,如何表示负数,如何进行正负数的运算,这就是原反补的意义...
  • yang131peng
  • yang131peng
  • 2016-12-02 21:22:16
  • 366

关于原反补

关于原码补码反码的问题真是纠结了好久,都怪当初没学好基础。简单理解,原码就是给用户看的,补码是给计算机看的!...
  • qq_34421538
  • qq_34421538
  • 2016-11-18 16:46:33
  • 186

原-补-反-移

一   计算机对带符号数的表示有三种方法:原码、反码和补码     8位原码和反码能够表示数的范围是-127~127     8位补码能够表示数的范围是 -128~127   ...
  • u011252685
  • u011252685
  • 2015-05-01 08:01:08
  • 275

转 原反补

数值有正负之分,计算机就用一个数的最高位存放符号(0为正,1为负).这就是机器数的原码了.假设机器能处理的位数为8.即字长为1byte,原码能表示数值的范围为 (-127~-0 +0~127)共25...
  • yinyichao0107
  • yinyichao0107
  • 2013-03-19 16:34:28
  • 689

原、反、补、移

原码、反码、补码、移码, 四种数值表示方法都使用同一格式:    [1位符号位]+[n位数值位]原码:    符号位,正为0、负为1。    数值位,数字绝对值的2进制表示。        [+101...
  • syzhangzhinan
  • syzhangzhinan
  • 2011-04-15 16:42:00
  • 609

组成原理原码反码补码移码

一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数。机器数是带符号的,在计算机用一...
  • AcSuccess
  • AcSuccess
  • 2017-03-10 21:02:19
  • 244

进制转化,原反补,类型转换,寄存器

进制转化: 10进制—2进制—8进制—16进制 eg:125(10)——125(2)——125(8)——125(16) 128 64 32 1...
  • qq_41214278
  • qq_41214278
  • 2017-12-09 11:23:27
  • 62
    个人资料
    等级:
    访问量: 2万+
    积分: 213
    排名: 34万+
    文章存档
    最新评论