反码的实质是一种特殊的补码,其特殊之处在于反码的模比补码的模小一个最低位上的1。
反码的定义:
ü 纯小数:0<=x<1时,x的反码是其自身;-1<x<=0时,x的反码为(2-2^(1-n))+x。模为2-2^(1-n)。
ü 纯整数:0<=x<2^(n-1),x的反码是其自身;-2^(n-1)<x<=0时,x的反码为(2^n-1)+x。模为2^n-1。
根据反码的定义可得反码的求法:若x>=0,则使符号位为0,数值部分与x相同,即可得到x反;若x<=0,则使得符号位为1,x的数值部分各位取反,即可得到x反。
例4-1:已知x原码、x补码,求x反码。
ü x原码=0.0101001 x原码>0,由定义反码为其自身,x反码=0.0101001
ü x原码=11011010 x<0,由定义除符号位外各位取反,x反码=10100101
ü x补码=0.0101001 x>0,反码和补码都等于原码,它们是相等的,x反码=0.0101001
ü x补码=11011010 x<0,反码的模比补码小一个最低位上的1,因此,反码要比补码小一个最低位上的1,x反码=11011001
例4-2:反码中零的表示方法有两种。
纯小数+0和-0的反码表示:[+0]反码=0.000…0 (n个0)
[-0]反码=(2-2^(1-n))-0.000…0=1.111…1 (n个1)
纯整数+0和-0的反码表示:[+0]反码=0000…0 (n个0)
[-0]反码=(2^n-1)-0000…0=1111…1 (n个1)
例4-3:反码表示的范围。
反码的表示范围与原码的表示范围相同,比补码少表示一个数,因为反码的模比补码少了一个最低位的1,自然也就要少表示一个数。纯小数的反码不能表示-1,纯整数的反码不能表示-2^(n-1)。
反码的定义:
ü 纯小数:0<=x<1时,x的反码是其自身;-1<x<=0时,x的反码为(2-2^(1-n))+x。模为2-2^(1-n)。
ü 纯整数:0<=x<2^(n-1),x的反码是其自身;-2^(n-1)<x<=0时,x的反码为(2^n-1)+x。模为2^n-1。
根据反码的定义可得反码的求法:若x>=0,则使符号位为0,数值部分与x相同,即可得到x反;若x<=0,则使得符号位为1,x的数值部分各位取反,即可得到x反。
例4-1:已知x原码、x补码,求x反码。
ü x原码=0.0101001 x原码>0,由定义反码为其自身,x反码=0.0101001
ü x原码=11011010 x<0,由定义除符号位外各位取反,x反码=10100101
ü x补码=0.0101001 x>0,反码和补码都等于原码,它们是相等的,x反码=0.0101001
ü x补码=11011010 x<0,反码的模比补码小一个最低位上的1,因此,反码要比补码小一个最低位上的1,x反码=11011001
例4-2:反码中零的表示方法有两种。
纯小数+0和-0的反码表示:[+0]反码=0.000…0 (n个0)
[-0]反码=(2-2^(1-n))-0.000…0=1.111…1 (n个1)
纯整数+0和-0的反码表示:[+0]反码=0000…0 (n个0)
[-0]反码=(2^n-1)-0000…0=1111…1 (n个1)
例4-3:反码表示的范围。
反码的表示范围与原码的表示范围相同,比补码少表示一个数,因为反码的模比补码少了一个最低位的1,自然也就要少表示一个数。纯小数的反码不能表示-1,纯整数的反码不能表示-2^(n-1)。