第二章 数据的表示与运算
数据的表示与运算
? 2.1 进位计数制及其转换
? 2.2 数据在计算机中的表示
? 2.3 计算机的运算
2.1 进位计数制及其转换
? 2.1.1 进位计数制
? 2.1.2 不同数制间的转换
2.1.1 进位计数制
十进制 R=10,可使用 0,1,2,3,4,5,6,7,8,9
二进制 R=2,可使用 0,1
八进制 R=8,可使用 0,1,2,3,4,5,6,7
十六进制 R=16,可使用 0,……,9,A,B,C,D,E,F
,逢 R进 一,借 一 当 R”
基数的概念
2.1.1 进位计数制
位权值的概念
每个位置上的数据所表示的数值等于该数符乘以该位置上的位权值
例,666.66 = 6× 102+ 6× 101+ 6× 100+ 6× 10-1+ 6× 10-2
例, (101101.11) 2 = 1× 25+ 1× 24+ 1× 23+ 1× 22+
0× 21+ 1× 20+ 1× 2-1+ 1× 2-2
32 + 0 + 8 + 4 + 0 +1 + 0.5 + 0.25
(45.75)10
2.1.2 不同数制之间的转换
? 二、八、十六进制转换为十进制
? 对任意一个二、八、十六进制数,均可
按照前述 r进制数的展开和式方便的转
成相应的十进制数
? 如:
( 1101.01)2=1X23+1X22+0X21+1X20+
0X2-1+1X2-2
十进制数换为 r进制数
? (1)十进制整数转换为 r进制
? 规则:采用除以 r取余数,直到商为零
时结束。所得余数序列,先余为低位,
后余为高位。
? (2)十进制小数转换为 r进制
? 规则:采用乘以 r取整数,直到余数为 0
时结束。所得整数序列,先整为高位,
后整为低位。
十进制整数转为二进制整数
1101例 1,(13)10 = ( )2
1 3
6
3
1
0
2
2
2
2
余数
1
0
1
1
二进制数 低 位
二进制数 高 位
十进制小数转成二进制小数
(0.6875)10 = ( )2
0,6 8 7 5
2×
3 7 5 01.
2×
7 5 0
2×
0.
5 01.
2×
0 1.
整数
1
0
1
1
二进制数 高 位
二进制数 低 位
例 2:
二进制与八进制、十六进制之间的相互转换
(1) 二进制数转换成八进制数:以小数点为分界点,左
右三位一节,不足三位以零补足三位 。
例, (101101.01) 2=(101,101.010)=(55.2)8
(2)八进制数转换成二进制数:将每位八进制数码以三
位二进制数表示。
例, (76.42) 8=(111110.100010)2=(111110.10001)2
二进制与八进制、十六进制之间的相互转换
(3)二进制数转换成十六进制数:以小数点为分界
点,左右每四位一节,不足四位以零补足四位。
(1111011011.100101011)2 = (11,1101,1011.1001,0101,1000)2
= (3DB.958)16
(4)十六进制数转换成二进制数:将每位十六进制
数码以四位二进制数表示。
例, (A3B.C) 16 = (101000111011.1100)2
= (101000111011.11)2
2.2 数据在计算机中的表示
计算机中的数据:
① 数值型数据,128,(32.56)8;
② 非数值型数据:“学生”、,0730-8845139”。
2.2.1数值数据的表示
1,计算机中数的有关概念
① 数的长度
1字节( byte)=8比特( bit)
在计算机中,数的长度按比特( bit)来计算。但
因存储容量常以“字节”为计量单位,所以数据长
度也常以字节为单位计算。
2.2.1数值数据的表示
③ 小数点的表示方法
在计算机中表示数值型数据,其小数点的位置总
是隐含的。
② 数的符号
一般用数的最高位(左边第一位)来表示数的正
负号,并约定以,0”表示正,以,1”表示负。
2.2.1数值数据的表示
数的定点表示:将计算机中的小数点的位置视为
是固定不变的。
① 定点整数
格式:
② 定点小数
范围,-2n-1~ (2n-1) 和 – 1~ (1 – 2-(n-1))
2,定点数表示方法
格式:
2.2.1数值数据的表示
3,浮点数的表示方法
格式:
阶码是指数部分的值,表示幂次,其基数通常取 2。
X = + d × 2+E
例如,256.5 的浮点格式 (32位 )为:
00001001 010000000010000000000000
所以 ( 256.5)10 = (0.1000000001)2× 29
阶码, 7位 数符 尾数,23位阶
符
32位浮点数的范围是:
最大正数, (1- 2- 23)× 2127
最小正数, 2- 1× 2- 128= 2- 129
最大负数,- 2- 1× 2- 128=- 2- 129
最小负数,- (1- 2- 23)× 2127
也即,2- 129≤|X| ≤ (1- 2- 23)× 2127
( 1)原码
原码就是用最高位表示数的正、负号,0表示正,
1表示负,而数值部分用最高位以后的若干位来表示。
( 2)反码
原码变反码的规则为:正数的反码与原码相同;
负数的反码是将它的原码除符号位外逐位取反。
例, 二进制数 + 1000110的原码表示为,01000110
二进制数 - 1000110的原码表示为,11000110
2.2.1数值数据的表示
4,带符号数的表示方法
2.2.1数值数据的表示
( 3)补码
补码的取码原则是:正数的补码和其原码相同;
负数的补码是它的原码除符号位外逐位取反(即 0变 1,
1变 0),最后在末位加 1。
例, 二进制数 + 1000110的补码表示为,01000110
二进制数 - 1000110的补码表示为,10111010
二进制数 - 1000110的反码表示为,10111001
例, 二进制数 + 1000110的反码表示为,01000110
原码、补码的几个例子
十进制 原 码 补 码
87
-87
127
-127
0
-0
01010111 01010111
11010111 10101001
01111111 01111111
11111111 10000001
00000000 00000000
10000000 00000000
采用补码来表示正、负整数时,+0 和- 0 的取码
是完全相同的,而原码对 +0和- 0 的取码是不相同的。
补码的加减法公式
[ X + Y ]补 = [ X ]补 + [ Y ]补
[ X - Y ]补 = [ X ]补 + [- Y ]补
[[ X ]补 ] 补 = [ X ]原
例题
例, 设 X=44 Y=59 求 X +Y =? X- Y =?
由 [ X ]补 = 0101100 [ Y ]补 = 00111011
[ -Y ]补 =11000101 [ -Y ]原 =10111011
故 [ X + Y ]补 = [ X ]补 + [ Y ]补 = 01100111
得 X + Y = + 1100111 = ( + 103)10
由 [ X - Y ]补 = [ X ]补 + [- Y ]补 =11110001
[ X - Y ]原 = [[ X- Y ]补 ]求补 =10001111
得 X- Y = -0001111 = (- 15)10
数值编码
十进制数与 8421BCD编码表
1011 0001
0000
0001
0010
0011
0100
0101
0110
0111
0
1
2
3
4
5
6
7
1000
1001
1010 0000
1100 0010
0001 0100
十进制数 8421BCD码 8421BCD码
8
9
10
11
12
13
14
十进制数
15 0001 0101
0001 0011
2.2.2 字符数据的表示
( 1)西文字符的 ASCII编码
( 2)汉字字符的编码
GB2312编码局部表
GB2312编码总体布局
① 汉字交换码
汉字的各种编码及其关系
② 汉字机内码 ③ 汉字输入码
④ 汉字字形码 ⑤ 国标 GB18030- 2000
用户 键盘 转换程序
存储器汉字库及程序显示器 /打印机
输入汉字 输入编码
机
内
码
机内码
输出字形编码
输入码、机内码、字形码之间的关系
2.3 计算机的运算
? 算术运算:加、减、乘、除
? 逻辑运算:与、或、非
? 数据比较:大于、小于、等于、不等于、
大于等于、小于等于
? 数据传送:输入、输出、赋值
2.3.1 二进制的算术运算
? 加法
? 0+0=0 0+1=1 1+0=1 1+1=0 (进位)
? 减法
? 0-0=0 1-0=1 1-1=0 0-1=1 (借位)
? 乘法
? 0x0=0 1x0=0 0x1=0 1x1=1
? 除法 与十进制类似
逻辑运算
? 逻辑“与”运算
? 0x1=0 1x0=0 0x0=0 1x1=1
? 逻辑“或”运算
? 0+0=0 0+1=1 1+0=1 1+1=1
? 逻辑“非”运算
? Not 0= 1 Not 1 = 0
数据的表示与运算
? 2.1 进位计数制及其转换
? 2.2 数据在计算机中的表示
? 2.3 计算机的运算
2.1 进位计数制及其转换
? 2.1.1 进位计数制
? 2.1.2 不同数制间的转换
2.1.1 进位计数制
十进制 R=10,可使用 0,1,2,3,4,5,6,7,8,9
二进制 R=2,可使用 0,1
八进制 R=8,可使用 0,1,2,3,4,5,6,7
十六进制 R=16,可使用 0,……,9,A,B,C,D,E,F
,逢 R进 一,借 一 当 R”
基数的概念
2.1.1 进位计数制
位权值的概念
每个位置上的数据所表示的数值等于该数符乘以该位置上的位权值
例,666.66 = 6× 102+ 6× 101+ 6× 100+ 6× 10-1+ 6× 10-2
例, (101101.11) 2 = 1× 25+ 1× 24+ 1× 23+ 1× 22+
0× 21+ 1× 20+ 1× 2-1+ 1× 2-2
32 + 0 + 8 + 4 + 0 +1 + 0.5 + 0.25
(45.75)10
2.1.2 不同数制之间的转换
? 二、八、十六进制转换为十进制
? 对任意一个二、八、十六进制数,均可
按照前述 r进制数的展开和式方便的转
成相应的十进制数
? 如:
( 1101.01)2=1X23+1X22+0X21+1X20+
0X2-1+1X2-2
十进制数换为 r进制数
? (1)十进制整数转换为 r进制
? 规则:采用除以 r取余数,直到商为零
时结束。所得余数序列,先余为低位,
后余为高位。
? (2)十进制小数转换为 r进制
? 规则:采用乘以 r取整数,直到余数为 0
时结束。所得整数序列,先整为高位,
后整为低位。
十进制整数转为二进制整数
1101例 1,(13)10 = ( )2
1 3
6
3
1
0
2
2
2
2
余数
1
0
1
1
二进制数 低 位
二进制数 高 位
十进制小数转成二进制小数
(0.6875)10 = ( )2
0,6 8 7 5
2×
3 7 5 01.
2×
7 5 0
2×
0.
5 01.
2×
0 1.
整数
1
0
1
1
二进制数 高 位
二进制数 低 位
例 2:
二进制与八进制、十六进制之间的相互转换
(1) 二进制数转换成八进制数:以小数点为分界点,左
右三位一节,不足三位以零补足三位 。
例, (101101.01) 2=(101,101.010)=(55.2)8
(2)八进制数转换成二进制数:将每位八进制数码以三
位二进制数表示。
例, (76.42) 8=(111110.100010)2=(111110.10001)2
二进制与八进制、十六进制之间的相互转换
(3)二进制数转换成十六进制数:以小数点为分界
点,左右每四位一节,不足四位以零补足四位。
(1111011011.100101011)2 = (11,1101,1011.1001,0101,1000)2
= (3DB.958)16
(4)十六进制数转换成二进制数:将每位十六进制
数码以四位二进制数表示。
例, (A3B.C) 16 = (101000111011.1100)2
= (101000111011.11)2
2.2 数据在计算机中的表示
计算机中的数据:
① 数值型数据,128,(32.56)8;
② 非数值型数据:“学生”、,0730-8845139”。
2.2.1数值数据的表示
1,计算机中数的有关概念
① 数的长度
1字节( byte)=8比特( bit)
在计算机中,数的长度按比特( bit)来计算。但
因存储容量常以“字节”为计量单位,所以数据长
度也常以字节为单位计算。
2.2.1数值数据的表示
③ 小数点的表示方法
在计算机中表示数值型数据,其小数点的位置总
是隐含的。
② 数的符号
一般用数的最高位(左边第一位)来表示数的正
负号,并约定以,0”表示正,以,1”表示负。
2.2.1数值数据的表示
数的定点表示:将计算机中的小数点的位置视为
是固定不变的。
① 定点整数
格式:
② 定点小数
范围,-2n-1~ (2n-1) 和 – 1~ (1 – 2-(n-1))
2,定点数表示方法
格式:
2.2.1数值数据的表示
3,浮点数的表示方法
格式:
阶码是指数部分的值,表示幂次,其基数通常取 2。
X = + d × 2+E
例如,256.5 的浮点格式 (32位 )为:
00001001 010000000010000000000000
所以 ( 256.5)10 = (0.1000000001)2× 29
阶码, 7位 数符 尾数,23位阶
符
32位浮点数的范围是:
最大正数, (1- 2- 23)× 2127
最小正数, 2- 1× 2- 128= 2- 129
最大负数,- 2- 1× 2- 128=- 2- 129
最小负数,- (1- 2- 23)× 2127
也即,2- 129≤|X| ≤ (1- 2- 23)× 2127
( 1)原码
原码就是用最高位表示数的正、负号,0表示正,
1表示负,而数值部分用最高位以后的若干位来表示。
( 2)反码
原码变反码的规则为:正数的反码与原码相同;
负数的反码是将它的原码除符号位外逐位取反。
例, 二进制数 + 1000110的原码表示为,01000110
二进制数 - 1000110的原码表示为,11000110
2.2.1数值数据的表示
4,带符号数的表示方法
2.2.1数值数据的表示
( 3)补码
补码的取码原则是:正数的补码和其原码相同;
负数的补码是它的原码除符号位外逐位取反(即 0变 1,
1变 0),最后在末位加 1。
例, 二进制数 + 1000110的补码表示为,01000110
二进制数 - 1000110的补码表示为,10111010
二进制数 - 1000110的反码表示为,10111001
例, 二进制数 + 1000110的反码表示为,01000110
原码、补码的几个例子
十进制 原 码 补 码
87
-87
127
-127
0
-0
01010111 01010111
11010111 10101001
01111111 01111111
11111111 10000001
00000000 00000000
10000000 00000000
采用补码来表示正、负整数时,+0 和- 0 的取码
是完全相同的,而原码对 +0和- 0 的取码是不相同的。
补码的加减法公式
[ X + Y ]补 = [ X ]补 + [ Y ]补
[ X - Y ]补 = [ X ]补 + [- Y ]补
[[ X ]补 ] 补 = [ X ]原
例题
例, 设 X=44 Y=59 求 X +Y =? X- Y =?
由 [ X ]补 = 0101100 [ Y ]补 = 00111011
[ -Y ]补 =11000101 [ -Y ]原 =10111011
故 [ X + Y ]补 = [ X ]补 + [ Y ]补 = 01100111
得 X + Y = + 1100111 = ( + 103)10
由 [ X - Y ]补 = [ X ]补 + [- Y ]补 =11110001
[ X - Y ]原 = [[ X- Y ]补 ]求补 =10001111
得 X- Y = -0001111 = (- 15)10
数值编码
十进制数与 8421BCD编码表
1011 0001
0000
0001
0010
0011
0100
0101
0110
0111
0
1
2
3
4
5
6
7
1000
1001
1010 0000
1100 0010
0001 0100
十进制数 8421BCD码 8421BCD码
8
9
10
11
12
13
14
十进制数
15 0001 0101
0001 0011
2.2.2 字符数据的表示
( 1)西文字符的 ASCII编码
( 2)汉字字符的编码
GB2312编码局部表
GB2312编码总体布局
① 汉字交换码
汉字的各种编码及其关系
② 汉字机内码 ③ 汉字输入码
④ 汉字字形码 ⑤ 国标 GB18030- 2000
用户 键盘 转换程序
存储器汉字库及程序显示器 /打印机
输入汉字 输入编码
机
内
码
机内码
输出字形编码
输入码、机内码、字形码之间的关系
2.3 计算机的运算
? 算术运算:加、减、乘、除
? 逻辑运算:与、或、非
? 数据比较:大于、小于、等于、不等于、
大于等于、小于等于
? 数据传送:输入、输出、赋值
2.3.1 二进制的算术运算
? 加法
? 0+0=0 0+1=1 1+0=1 1+1=0 (进位)
? 减法
? 0-0=0 1-0=1 1-1=0 0-1=1 (借位)
? 乘法
? 0x0=0 1x0=0 0x1=0 1x1=1
? 除法 与十进制类似
逻辑运算
? 逻辑“与”运算
? 0x1=0 1x0=0 0x0=0 1x1=1
? 逻辑“或”运算
? 0+0=0 0+1=1 1+0=1 1+1=1
? 逻辑“非”运算
? Not 0= 1 Not 1 = 0