n位计算机,设n=8, 所能表示的最大数是11111111,若再加1称为100000000(9位) 但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2。 在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。
[-x]补=模- [x]补
8
8
[x]补=模- [-x]补 比如8bit,模= 2
[-1]补=2- [1]补=1_0000_0000 - 0000_0001 = 1111_1111 [-(-1)]补=2- [-1]补=1_0000_0000 - 1111_1111 = 0000_0001
8 8
把补数用到计算机对数的处理上,就是补码。
负数取模
x mod y = x - y*int( x / y )
int( x / y ) VB语法表示:不大于(x/y)的最大整数,即向下取整 int(-1.5)=-2 Fix(-1.5)=-1
举例: -3 mod 2 = -3 - 2*int(-3/2) = -3 - 2*(-2) = -3 - 2x(-2)=1
同余的概念
两个整数a,b,若它们除以整数m所得的余数相等,则称a,b对于模m同余
记作 a ≡ b (mod m) 读作 a 与 b 对于模 m 同余
举例说明: 4 mod 12 = 4 ; 16 mod 12 = 4 ; 28 mod 12 = 4 所以4, 16, 28对于模 12 同余. 两个定理: 1、反身性:
a ≡ a (mod m) 自己和自己 对于模m同余
2、线性运算定理:
如果a ≡ b (mod m),c ≡ d (mod m) 那么:
(1)a ± c ≡ b ± d (mod m) (2) a * c ≡ b * d (mod m)
3、传递性:
若a≡b (mod m),b≡c (mod m),则a≡c (mod m)
典型例题 一、选择题
1、一个四位二进制补码的表示范围是( )
A、0~15 B、-8~7 C、-7~7 D、-7~8 2、(10题)十进制数-48用补码表示为( )
A、10110000 B、11010000 C、11110000 D、11001111 分析:求某个负数的补码,可利用模的定义,所以求-48的补码,只需求-80的原码即可,因为-48+(-80)=-128,而[-80]原=11010000,故选B,注,传统做法是在原码的基础上“取反加1”。
答案:B
3、(09年镇江三模)如果X为负数,由[x]补求[-x]补是将( )
A、[x]补各值保持不变 B、[x]补符号位变反,其他各位不变 C、[x]补除符号位外,各位变反,末位加1 D、[x]补连同符号位一起各位变反,末位加1
分析:不论X是正数还是负数,由[X]补求[-X]补的方法是对[X]补求补,即连同符号位一起按位取反,末位加1。
答案:D 二、 判断题
1.计算机中一个浮点数N可用±2P×S表示,那么用规格化数表示,则尾数S必须满足0.5≤|S|<1。 【答案】对
【解题指导】一个浮点形式的尾数S若满足0.5≤|S|<1,且尾数的最高位数为1,无无效的0,则该浮点数称为规格化数;规格化数可以提高运算的精度。 三、 填空题
1.二进制数0.011011的规格化数为 1111111101101100 ,二进制数-11011的规格化数为 0000010110010100 。(尾数、阶码均用8位二进制补码表示)
分析:0.011011可表示为0.11011×2-1,即规格化数为0.11011×2-1 -11011可表示为-0.11011×25,即规格化数为0.11011×2101
2、已知X、Y为两个有符号数的定点整数,它们的补码为:[x]补=00010011B,[y]补=11111001B,则[X+Y]补= B。
分析:[X+Y]补=[X]补+[Y]补,X为正数,Y为负数,故列式结果不溢出为00001100。 答案:00001100
原码、反码和补码的概念当堂练习
一、选择题
( )1、机器数80H所表示的真值是-128,则该机器数为 形式的表示。 A、原码 B、反码 C、补码 D、移码 ( )2、在浮点数中,阶码、尾数的表示格式是 。
A、阶码定点整数,尾数定点小数 B、阶码定点整数,尾数定点整数 C、阶码定点小数,尾数定点整数 D、阶码定点小数,尾数定点小数
( )3、已知[x]补=10110111,[y]补=01001010,则[x-y]补的结果是 。 A、溢出 B、01101010 C、01001010 D、11001010
( )4、某机字长8位,含一位数符,采用原码表示,则定点小数所能表示的非零最小正数为 。 A、2-9 B、2-8 C、-1 D、2-7 ( )5、(08年)下列数中最小的数是____C____。 A.[10010101]原 B.[10010101]反 C.[10010101]补 D.[10010101]2 ( )6、(12年)8位补码表示的定点整数的范围是 B 。
A、-128~+128 B、-128~+127 C、-127~+128 D、-127~+127
( )7、(11年盐城二模)已知X的补码为10110100,Y的补码为01101010,则X-Y的补码为 。 A) 01101010
B) 01001010 C) 11001010
D) 溢出
( )8、将-33以单符号位补码形式存入8位寄存器中,寄存器中的内容为( )。
A.DFH B.A1H C.5FH D.DEH
( )9、在机器数的三种表示形式中,符号位可以和数值位一起参加运算的是( )
A)原码 B)补码 C)反码 D)反码、补码 二、判断题
( )1、16位的补码表示的定点整数的最小值是-32768。
( )2、(10年南京二模)一个数在计算机中分别用原码、反码、补码表示时一定各不相同。 ( )3、(10年常州三模)字长相同,定点法表示数的范围比浮点法小。
( )4.若用八位二进制数来表示一个有符号数,则原码、反码和补码表示的数的个数与范围均相同。 三、填空题
1、十进制数-27对应的8位二进制补码为 。 2、(11年)已知X、Y为两个带符号的定点整数,它们的补码为:[X]补=00010011B,[Y]补=11111001B,则[X+Y]补 = 00001100 B。
3、数x的真值为-0.1011B,其原码表示为 ,补码表示为 。
4、八位定点整数,采用二进制补码表示时,所能表示真值的十进制数的范围是 。 5、(09年)已知[X]补=01110111B,[Y]补=01100010B,则[X-Y] 补=______00010101__________。
6、(11年)一个含有6个“1”、2个“0”的八位二进制整数原码,可表示的最大数为 7EH 。
(用十六进制表示) 7、(12年)已知[X]补=10000000B,则X= -10000000 B。
8、(10年盐城二模)二进制数10110000,若看成纯小数,且为补码,则其对应真值的十进制数是________。
原码、反码和补码的概念课后练习
一、选择题
( )1、(10年盐城二模)“溢出”一般是指计算机在运算过程是产生的 _____ 。
A、数据量超过内存容量 B、文件个数超过磁盘目录区规定的范围
C、数据超过了机器的位所能表示的范围 D、数据超过了变量的表示范围
( )2、设有二进制数X=-1101110,若采用8位二进制数表示,则[X]补的结果是 。 A、11101101 B、10010011 C、00010011 D、10010010
( )3、假设有一个16机的某存储单元存放着数1101101101001000,若该数作为原码表示十进制有符号整数(其中最高位为符号位)时,其值为 。
A、-55510 B、-23368 C、-18762 D、56136
( )4、计算机内的数有浮点和定点两种表示方法。一个浮点法表示的数由两部分组成,即 。
A)指数和基数 B) 尾数和小数 C) 阶码和尾数 D) 整数和小数
二、判断题
( )1.负数的补码就是原码逐位取反后的结果。
( )2.[X]补是一个正数还是一个负数,是根据[X]补的符号位是“0”还是“1”确定的。
三、 填空题
1、(11年盐城二模)已知[X]补=11111111,X对应的真值是 -1 。 2、已知[x]补=10111011,[y]补=01101101,则[x+y]补=__________ 3、(10年南京二模).已知[X]补=10000000B,则X= (十进制)。
第二节 数制及数制的转换巩固练习
一、选择题
1.(1110)2×(1011)2=———。
A)11010010 B)10111011 C)10110110 D)10011010 2.十六进制数(AB)16变换为等值的八进制数是____。 A)253 B)35l C)243 D)101
3.下列数中最大的数是 。
A)(227)8 B)(1FF)16 C)(10100001)2 D)(1789)10
4.十进制数87转换成二进制数是 。
A)(1010111)2 B)(1101010)2 C)(1110011)2 )D、(1010110)2 5.十进制数1385转换成十六进制数为 。 A)568 B)569 C)D85 D)D55 6、(12年)下列不同进制数中最大的数是 D 。
A、10111001B B、257Q C、97D D、BFH 二、判断题
( )1、1000H是1000Q的2倍,因为16是8的2倍。
( )2.十进制数要转换成十六进制数必须先转换为二进制数然后再由二进制数转换成十六进制数。 ( )3.计算机中也可以直接处理十六进制数。 三、填空题
1.将一个十进制整数转换为二进制数,采用 的方法,将所有的余数按照先后顺序组合的一起即可,而将一个纯小数转换为二进制数则可采用 的方法,然后将所有的整数按照一定顺序组合在一起。
2、(09年)十进制数25.1875对应的二进制数是____11001.0011 。
3、一个二进制整数右端加上三个零,形成的新数是原数的 倍。 4.八进制数37.4O转换成二进制数为 。