原码
概念
原码(true form)是一种计算机中对数字的二进制定点表示方法原码表示法在数值前面增加了一位符号位(即最高位为符号位),该位为0表示正数,该位为1表示负数,其余位表示数值的大小
优点
小数的原码简单直观;例如,我们用8位二进制表示一个数,
+11的原码为00001011
-11的原码为10001011
缺点
原码不能直接参加运算,可能会出错
例如数学上,1+(-1)=0
而在二进制中
原码
00000001+10000001=10000010,换算成十进制为130
显然出错了.
计算机中所有的数均用01编码表示,数字的正负号也不例外,如果一个机器数字长是n位的话,约定最左边一位用作符号位,其余n-1位用于表示数值
在符号位上用"0"表示正数;用"1"表示负数数值位表示真值的绝对值凡不足n-1位的,小数在最低位右边加零;整数则在最高位左边加零已补足n-1这种计算机的编码形式叫做原码
记作X=[X]例如在字长n=8的机器内:
  小数: [+0.1011]=0.1011000
  [-0.1011]=1.1011000
  整数: [+1011]=00001011
  [-1011]=10001011
  代码中的小数点”.”是在书写时为了清晰起见加上去的,在机器中并不出现
原码是有符号数的最简单的编码方式,便于输入输出,但作为代码加减运算时较为复杂
一个字长为n的机器数能表示不同的数字的个数是固定的2^n个,n=82^n=256;用来表示有符号数,数的范围就是-2^n-1~+2^n-1n=8是这个范围就是-128~+127但是在不需要考虑数的正负时,就不需要用一位来表示符号位,n位机器数全部用来表示是数值,这时表示数的范围就是0~2^n-1n=8时这个范围就是0~255.没有符号位的数,称为无符号数
补码
1计算机系统中,数值一律用补码来表示(存储)
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理另外,两个用补 码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃
2补码与原码的转换过程几乎是相同的
正数的补码
  原码相同
1+9的补码是00001001(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有162进制补码表示形式,以及322进制补码表示形式等同一个数字在不同的补码表示形式里头,是不同的比方说下面所要提到的-15的补码,在82进制里头是11110001,然而在162进制补码表示的情况下,就成了111111*********1在这篇补码概述里头涉及的补码转换默认了把一个数转换成82进制的补码形式,每一种补码表示形式都只能表示有限的数字
负数的补码
  符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1
 
2-7的补码
  因为给定数是负数,则符号位为“1”。
  后七位:+7的原码(0000111按位取反(111100011111001
  所以-7的补码是11111001
  已知一个数的补码,求原码的操作分两种情况:
  1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码
  2)如果补码的符号位为“1,表示是一个负数,那么求给定的这个补码的补码就是要求的原码
  另一种方法求负数的补码如下:
  例如:求-15的补码
  第一步:+1500001111
  第二步:逐位取反(1变成00变成1),然后在末尾加1
  11110001
  再举一个例子验证下:求-64的补码
  +6401000000
  11000000
  【3已知一个补码为11111001,则原码是10000111-7
  因为符号位为“1,表示是一个负数,所以该位不变,仍为“1”。
  其余七位1111001取反后为0000110
  再加1,所以是10000111
  闲扯原码反码补码文件中,没有提到一个很重要的概念我在这里稍微介绍一下
  的概念:
  是指一个计量系统的计数范围如时钟等计算机也可以看成一个计量机器,它也有一个计量范
  围,即都存在一个例如:
  时钟的计量范围是011,模=12
  表示n位的计算机计量范围是02^(n)-1,模=2^(n)
  实质上是计量器产生溢出的量,它的值在计量器上表示不出来,计量器上只能表示出模的
  余数任何有模的计量器,均可化减法为加法运算
  例如: 假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:
  一种是倒拨4小时,即:10-4=6
  另一种是顺拨8小时:10+8=12+6=6
  在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替
  而言,84互为补数实际上以12模的系统中,111102937566都有这个特
  共同的特点是两者相加等于模
  对于计算机,其概念和方法完全一样n位计算机,设n=8 所能表示的最大数是11111111,若再
  1称为100000000(9),但因只有8位,最高位1自然丢失又回了00000000,所以8二进制系统
  模为2^8 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以
  把补数用到计算机对数的处理上,就是补码
  另外两个概念
  一的补码(one's complement) 指的是正数=原码,负数=反码
  而二的补码(two's complement) 指的就是通常所指的补码
  小数补码求法:一种简单的方式,符号位保持1不变,数值位从右边数第一个1及其右边的0保持不变,左边按位取反

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。