第一章基础知识
本章主要掌握两个要点:
一是各进制的转换,二是数据,非数据的表示和数据的类型
一、各进制的转换
1、 二进制数和十六进制数
在计算机里,通常用数字后面跟一个英文字母来表示该数的数字。
十进制数一般用D、二进制数用B、八进制数用O 、十六进制数用H来表示。
例如:10101100B, 115D,0075H等。
2、 十六进制数与其二进制、十进制之间的转换。
(1) 十进制转换为二进制数或十六进制数
用除以2取余法或除以16取余法
例如:N=45D 转换为二进制数 N=117D转换为十六进制数
45/2=22 (a0=1) /|\ 117/16=7 (a0=5)
22/2=11 (a1=0) | 7/16=0 (a1=7)
11/2=5 (a2=1) | 所以:N=117D=75H
5/2=2 (a3=1) |
2/2=1 (a4=0)
1/2=0 (a5=1) 所以:N=45D=101101B
(2)二进制数或十六进制数转换为十进制数
各位二进制数乘以与其对应的权之和
或各位十六进制数乘以与其对应的权之和
例如:将二进制数1011100转换为十进制数
1011100B=1*26 +0*25+1*24+1*23+1*22+0*21+0*20=92D
例如:将十六进制数3A4转换为十进制数|
3A4H=3*162+10*161+4*160=932D
(3)十六进制数和二进制数之间的转换
一个二进制数,把它从低位到高位每4位组成一组,直接用十六进制数来表示
例如:把二进制数0011010110111111转换为十六进制数
0011 0101 1011 1111
3 5 B F
即:0011010110111111B=35BFH
反之,把十六进制数中的每一位用4位二进制数表示,就形成相应的二进制数
例如:把十六进制数A19C转换为相应的二进制数
A 1 9 C
1010 0001 1001 1100
即:A19CH=1010000110011100B
二、数据的表示
计算机中存储信息的最小单位称为位,在绝大多数系统中
它只能表示两种状态。这两种状态分别代表0和1。
计算机系统内部采用二进制数表示数据和指令,也采用二进制数编码表示非数值数据和指令。
1、 数的补码表示(有符号数)
把一个数连同其符号在内在机器中的表示加以数值化,这样的数称为机器数。
机器数可以用不同的码制来表示,常用的有原码、补码、和反码表示法。
补码表示法中,正数采用符号绝对值表示:
假如:假设机器字长为8位,则[+1]补=00000001, [+127]补=01111111, [+0]补=00000000
当用补码表示法来表示负数时:负数x用2n-[x]来表示,其中n为机器的字长。
当n=8时:[-1]补=28-1=11111111,[-127]补=28—127=10000001
[-0]补=28=00000000 在补码表示法中0只有一种表示,即00000000 。
对于10000000这个数,在补码表示法中被定义为-128。
采用补码形式表示有符号数。那么n位二进制数能够表示:
有符号整数的范围是:-2 (n-1)≤ N ≤+2(n-1)-1
那么:8位表示数的有符号整数的范围为:-128~+127.
(10000000~01111111)
如果n是16 ,那么能够表示的有符号整数的范围是:-32768~+32767
下面举例:机器字长为16位。写出N=-127D的补码表示
+117D可表示为:0000 0000 0111 0101
按位求反后为: 1111 1111 1000 1010
末位加1后: 1111 1111 1000 1011
十六进制数为: F F 8 B
即:[-117D]补=FF8BH
2、 无符号整数
在某些情况下,要处理的数全是正数。
此时在保留符号位就没意义
n位二进制数能够表示的无符号整数的范围是
0≤ N ≤2n -1
8位无符号数表示的范围是0 ≤N ≤255
16位无符号数表示的范围是0 ≤N ≤65535
3、 符号扩展
常常需要把一个n位二进制数扩展成m位二进制数(m>n).
当要扩展的数是无符号数时。
例如:21的8位二进制数和16位二进制补码如下:
00010101 8位
0000000000010101 16位
如果要扩展的数是有符号数,并且采用补码形式表示,进行符号扩展
例如:-3的8位二进制补码和16位二进制补码如下:
11111101 8位
111111111111101 16位
4、 补码的加法和减法
对于一个正数的补码表示按位求反后再在末位加1,可以得到与此正数相应的负数的补码表示。把这种对于一个二进制数按位求反后在末位加1的运算称为求补运算。
[X]补 --–求补-à[-X]补 ---求补-à[X]补