阶码、移码、反码、源码、补码、余三码、循环码等各种码的概念

计算机内部,数是用二进制表示的。二进制数的编码方式有补码、原码、反码  
  和增码。二进制数的表示形式有定点表示(整数INTEGER和20到2-1之间的数)和浮点  
  表示两种。  
  无论什么数,它总是由符号和数值两部分组成。在计算机中数值和符号用某种  
  编码的形式表示。为明确起见,把原来的数值叫做真值,而把机器中对符号和数值  
  进行编码之后的数值叫做机器数。  
  1.原码  
  ▲n位二进制定点小数X=x0x1x2...xn-1的原码[X]原定义为:  
  ┌X   当1>X>=0时  
  [X]原=┤  
  └1-X=1+│X│   当0>=X>-1时  
  其特点有:  
  (1)0的原码有两种,即0.0000...0和1.0000...0。  
  n个   n个  
  (2)数的表示范围[-(1-2-n+1),(1-2-n+1)]  
  (3)最高位为符号位.若负数时符号位为1;正数则符号位为0.  
  (4)作乘除运算时较为方便,但作加减运算时较为复杂.  
  例:   若X=0.0101101.则[X]原=0.0101101  
  若X=-0.1010010,则[X]原=1.1010010  
  ▲n位整数X的原码定义如下:  
  ┌X   当2n-1>X>=0时  
  [X]原=┤  
  └2n-1-x=2n-1+│X│   当0>=X>-2-n-1时  
  2.补码    
  ▲n位二进制定点小数X=x0x1x2...xn-1的补码[X]补定义为:  
  ┌X   当1>X>=0时  
  [X]补=┤  
  └2+X=2-│X│   当0>X>=-1时  
  其特点有:  
  (1)0的补码有只有一种形式,即0.0000...0  
  n个    
  (2)数的表示范围[-1,(1-2-n+1)]  
  (3)最高位为符号位.若负数时符号位为1;正数则符号位为0.  
  (4)对于两个数X,Y,且X+Y不溢出,则有[X+Y]补=[X]补+[Y]补.  
  (5)补码加法的溢出判别,若两数均为负数相加,则最高位进位是0为下溢;若  
  两数均为正数相加,则最高位是1为上溢;若一正数和一负数相加,则不会发生溢出.  
  (6)作加减运算时较为方便,但作乘除运算时要比原码复杂.  
  例:若   X=-0.1000100,   则[X]补=10-0.1000100=1.0111100  
  若   X=0.1000001,   则[X]补=X=0.1000001  
  注:负数补码的求法:按位求反末位加1  
  如:求-0.1000100的补码  
  (1)按位求反:1.0111011  
  (2)末位加1:   1.0111100  
  1.0111100即为-0.1000100的补码。  
  ▲n位整数X的补码定义如下:  
  ┌X   当2n-1>X>=0时  
  [X]补=┤  
  └2n+X=2n-│X│   当0>X>=-2n-1时  
  3.反码  
  ▲n位二进制定点小数X=x0x1x2...xn-1的反码[X]反定义为:  
  ┌X   当1>X>=0时  
  [X]反=┤  
  2-2-n+1+X   当-1<X<=0时  
   
  其特点有:  
  (1)0的反码有两种,即0.0000...0和1.1111...1。  
  n个   n个  
  (2)数的表示范围[-(1-2-n+1),(1-2-n+1)]  
  (3)最高位为符号位.若负数时符号位为1;正数则符号位为0.  
  (4)反码和补码的关系:[X]补=[X]反+2-n+1.  
  (5)反码加法:[X+Y]反=[X]反+[Y]反+Ψ(Ψ为[X]反+[Y]反的最高位进位).  
  (6)反码加法的溢出判别和补码相同.  
  例:   若X=-0.1011   则[X]反=10-0.0001-0.1011=1.0100  
  若[X]补=1.0110,   求[X]反.  
  因为   [X]补=[X]反+0.0001  
  所以   [X]反=[X]补-0.0001=1.0101  
  或者:X=-10+1.0110=-0.1010  
  则[X]反=(10-0.0001)-0.1010=1.0101  
  ▲n位整数X的反码定义如下:  
  ┌X   当2n-1>X>=0时  
  [X]反=┤  
  └(2n-1)+X   当0>=X>-2n-1时  
  总之,一个正数X的原码、补码、反码均为其本身。一个二进制负数的原码、补  
  码、反码可用公式求得;一个负数的原码只要将符号位变为1,而其它都不变,一  
  个负数的反码只要将原码除符号位外其它位按位求反即可,一个负数X的补码可用  
  列方法求得:写出X的原码,将其按位求反,再在末尾加上1即可。   
   
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值