43
二二二 二二二二 二二二二

二进制、数制及其 相互转换

Embed Size (px)

DESCRIPTION

二进制、数制及其 相互转换. 什么是数制. 数制 : 数码、基数和位权 数码:数制中表示基本数值大小的不同数字符号。例如,十进制有 10 个数码: 0 、 1 、 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9 。 基数:数制所使用数码的个数。例如,二进制的基数为 2 ;十进制的基数为 10 。 位权:数制中某一位上的 1 所表示数值的大小(所处位置的价值)。例如,十进制的 123 , 1 的位权是 100 , 2 的位权是 10 , 3 的位权是 1 。. 二进制、数制及其相互转换. (一)计算机中使用二进制数 (二)进位计数制 - PowerPoint PPT Presentation

Citation preview

Page 1: 二进制、数制及其 相互转换

二进制、数制及其相互转换

Page 2: 二进制、数制及其 相互转换

什么是数制数制 : 数码、基数和位权 数码:数制中表示基本数值大小的不同数字符号。例如,十进制有 10 个数码: 0 、 1 、 2 、 3 、 4 、 5 、 6 、

7 、 8 、 9 。 基数:数制所使用数码的个数。例如,二进制的基数为

2 ;十进制的基数为 10 。 位权:数制中某一位上的 1 所表示数值的大小(所处位置的价值)。例如,十进制的 123 , 1 的位权是 100 ,

2 的位权是 10 , 3 的位权是 1 。

Page 3: 二进制、数制及其 相互转换

二进制、数制及其相互转换• (一)计算机中使用二进制数 • (二)进位计数制 • (三)二、八、十六进制数(非十进制数)转换为十进制数 • (四)十进制数转换为二、八、十六进制数(非十进制数) • (五)非十进制数间的转换 • (六)数制转换小结

Page 4: 二进制、数制及其 相互转换

(一)计算机中使用二进制数• 1 、认识各种数制的数 • 2 、在计算机中为什么使用二进制数 • 3 、为什么引入八进制数和十六进制数

Page 5: 二进制、数制及其 相互转换

1 、认识各种数制的数

Page 6: 二进制、数制及其 相互转换

2 、在计算机中为什么使用二进制数 • 二进制的优点:使用电子器件表示两种物理状态容易实现,两种状态的系统稳定性高,二进制运算简单、硬件容易实现、存储和传送可靠等• ( 1)可行性 二进制数只有 0、 1两个数码,采用电子器件很容易实现,而其它进制则很难实现。 • ( 2)可靠性 二进制的 0、 1两种状态,在传输和处理时不容易出错。 • ( 3)简易性 二进制的运算法规简单,这样,使得计算机的运算器结构大大简化,控制简单。 • ( 4)逻辑性 二进制的 0、 1两种状态,可以代表逻辑运算中的“假”和“真”两种值。

Page 7: 二进制、数制及其 相互转换

3 、为什么引入八进制数和十六进制数• 二进制数书写冗长、易错、难记,而十进制数与二进制数之间的转换过程复杂,所以一般用十六进制数或八进制数作为二进制数的缩写。

Page 8: 二进制、数制及其 相互转换

(二)进位计数制• 按进位的原则进行的计数方法称为进位计数制。

Page 9: 二进制、数制及其 相互转换

• 对于不同的数制,它们的共同特点是: • ( 1 )每一种数制都有固定的符号集:如十进制数制,其符号有十个: 0 , 1 ,2 ,, 9 ,二进制数制,其符号有两个: 0 和 1 。 • ( 2 )其次都是用位置表示法:即处于不同位置的数符所代表的值不同,与它所在位置的权值有关。

Page 10: 二进制、数制及其 相互转换

• 例如:十进制可表示为: • 5555.555 = 5 103 + 5 102 + 5 101 + 5 100 + 5 10-1 + 5 10-2 + 5 10-3 • 可以看出,各种进位计数制中的权的值恰好是基数的某次幂。因此,对任何一种进位计数制表示的数都可以写出按其权展开的多项式之和,任意一个 r 进制数 N 可表示为:

Page 11: 二进制、数制及其 相互转换

• 在微机中,常用的是二进制、八进制和十六进制。其中,二进制用得最为广泛。 • 下表所示的是计算机中常用的几种进位数制。

Page 12: 二进制、数制及其 相互转换

进位制 二进制 八进制 十进制 十六进制 规则 逢二进一 逢八进一 逢十进一 逢十六进一 基数 r = 2 r = 8 r = 10 r = 16 数符 0, 1 0, 1, , 7 0, 1, , 9 0, 1, , 9,

A, B, C, D, E, F

位权 2i 8i 10i 16i

形式表示 B O D H

Page 13: 二进制、数制及其 相互转换

(三)二、八、十六进制数(非十进制数)转换为十进制数• ( 1 )( 100110 ) 2 ( ) 10 • (100110)2 = 1 25 + 1 22 + 1 21 = (38)10• ( 2 )( 5675 ) 8 ( ) 10 • (5675)8 = 5 83 + 6 82 + 7 81 + 5 80 = 2560 + 384 + 56 + 5 = (3005)10

Page 14: 二进制、数制及其 相互转换

• ( 3 )( 3B ) 16 ( ) 10 • (3B)16 = 3 161 + 11 160 = 48 + 11 = (59)10• ( 4 )( 1011.11 ) 2 ( ) 10 • ( 1011.11 ) 2 =1 24-1+0 23-1+ 1 22-1

+1 20+1 2-1+1 2-2=11.75

Page 15: 二进制、数制及其 相互转换

课堂练习:• 1 、 (101110)2 ( )10 • (101110)2 = 1 26-1 + 0 25-1 + 1 24-1 + 1

23-1 + 1 22-1 + 0 20 • = 32 + 8 + 4 + 1• = (45)10• 2 、 (10101011.101)2 = ( )10 • (10101011.101)2 = (171.625)10

Page 16: 二进制、数制及其 相互转换

(四)十进制数转换为二进制数• 例: (25.3125)10 ( )2• 整数部分和小数部分的转换方法不同 • ( 1 )整数部分的转换(除基取余法) • (25)10 ( )2• (25)10 = (11001)2• 先余为低,后余为高

Page 17: 二进制、数制及其 相互转换

• ( 2 )小数部分的转换(乘基取整法)• (0.3125)10 ( )2• (0.3125)10 = (0.0101)2• 先取整为高,后取整为低• 综上所述: • (25.3125)10 = (11001)2 + (0.0101)2 = (11001.0101)2

Page 18: 二进制、数制及其 相互转换

• 课堂练习: • (29.625)10 ( )8• (29)10 = (35)8• (0.625)10 = (0.5)8• (29.625)10 = (35)8 + (0.5)8 = (35.5)8

Page 19: 二进制、数制及其 相互转换

(五)非十进制数间的转换 • ( 1 )二进制数与八进制数间的转换 • ( 2 )二进制数与十六进制数间的转换 • ( 3 )八进制数与十六进制数间的转换

Page 20: 二进制、数制及其 相互转换

( 1 )二进制数与八进制数间的转换 •∵ 81 = 23•∴ 1 位八进制数 相当于 3 位二进制数,即:• N2 = B8B7B6 B5B4B3 B2B1B0 • N8 = O2 O1 O0

Page 21: 二进制、数制及其 相互转换

• 例: (10100101.01011101)2 ( )8• 解:由于八进制的 1 位数相当于二进制的 3 位数,所以只要将二进制数从小数点开始,整数部分从右向左每 3 位数一组,小数部分从左向右每 3 位数一组,最后不足 3 位补零(无论向左还是向右)。• 010 100 101.010 111 010 二进制数• 2 4 5 . 2 7 2 八进制数• 答: (10100101.01011101)2 = (245.272)8

Page 22: 二进制、数制及其 相互转换

•例: (302.54)8 ( )2•解:• 3 0 2 . 5 4 八进制数• 011 000 010.101 100 二进制数•答: (302.54)8 = (11000010.1011)2

Page 23: 二进制、数制及其 相互转换

( 2 )二进制数与十六进制数间的转换 •∵ 161 = 24•∴ 1 位十六进制数 相当于 4 位二进制数,即:• N2 = B7B6B5 B4 B3B2B1B0 • N16 = H1 H0

Page 24: 二进制、数制及其 相互转换

•例: (1111111000111.100101011)2 ( )16•解:• 0001 1111 1100 0111.1001 0101 1000• 1 F C 7 . 9 5 8•答: (1111111000111.100101011)2 = (1FC7.958)16

Page 25: 二进制、数制及其 相互转换

•例: (3C.A6)16 ( )2•解:• 3 C . A 6 十六进制数• 0011 1100.1010 0110 二进制数•答: (3C.A6)16 = (111100.1010011)2

Page 26: 二进制、数制及其 相互转换

( 3 )八进制数与十六进制数间的转换• ( 1 )八进制数 十进制数 十六进制数• 或: ( 2 )八进制数 二进制数 十六进制数 (简单)

Page 27: 二进制、数制及其 相互转换

(六)数制转换小结• 数制转换小结

Page 28: 二进制、数制及其 相互转换

作 业• (一)  在计算机中为什么采用二进制?• (二)  在计算机中为什么引入八进制和十六进制?• (三)  (57.25)10 = ( )2 = ( )8 = ( )16• (四)  (10101011.101)2 = ( )10 = ( )8 = ( )16• (五)  (157.34)8 = ( )2 = ( )16 = ( )10• (六)  (2CE.D8)16 = ( )2 = ( )8 = ( )10

Page 29: 二进制、数制及其 相互转换

计算机编码• 原码• 反码• 补码• BCD 码

Page 30: 二进制、数制及其 相互转换

一、字节和位• 计算机系统的内存储器是由许多被称为“字节”( byte )的单元组成的。每一个字节有一个地址。一个字节由若干个二进制位( bit )组成。若干个字节组成一个存储单元,称为“字”( word )。每一个存储单元存放一个数据或一条指令。• 一个字节由 8 个二进制位( bit )组成。其中最右边的一位称为“最低有效位”或“最低位”( lea

st significant bit ),最左边的一位称为“最高有效位”或“最高位”( most significant bit )。每一个二进制位的值是 0 或 1 。

Page 31: 二进制、数制及其 相互转换

• 例如:在 C++ 中,以 4 个字节存放一个 int型整数,其最左边的一位(最高位)用作数的符号位。• 为了表示数值,可以采用不同的方法,一般有:原码、反码和补码。

Page 32: 二进制、数制及其 相互转换

二、原码• 只将最高位作符号位(以 0 代表正, 1 代表负),其余各位代表数值本身的绝对值(以二进制表示)。如:• +7 的原码为: 00000111• -7 的原码为: 10000111• 我们只用一个字节存放一个整数,如果用两个字节存放一个整数,情况是一样的,无非把 +7 表示成 00000000 00000111 而已。

Page 33: 二进制、数制及其 相互转换

• +0 的原码为: 00000000• -0 的原码为: 10000000• 显然, +0 和 -0 表示的是同一个数 0 ,而在内存中却有两个不同的表示。也就是说,

0 的表示不是唯一的,这不适合于计算机的运算。

Page 34: 二进制、数制及其 相互转换

三、反码• 一个数如果值为正,则它的反码与原码相同。如: +7 的反码为 00000111 。• 一个数如果值为负,则符号位为 1 ,其余各位是对原码取反。如:• -7 的反码为 11111000• +0 的反码为 00000000• -0 的反码为 11111111• 同样, 0 的表示是不唯一的。用反码表示的最大值为 +127 ,最小值为 -127 。

Page 35: 二进制、数制及其 相互转换

• +127 的反码为 01111111• -127 的反码为 10000000• 用反码表示数,现已不多用。

Page 36: 二进制、数制及其 相互转换

四、补码 • 原码和反码都不便于计算机内的运算,因为在运算中要单独处理其符号。例如,对以原码表示的 +7 和 -7 相加,必须先判断各自的符号位,然后对后 7 位进行相应的处理,很不方便。• 因此,最好能做到将符号位和其它位统一处理。对减法也按加法来处理。这就是“补码”。

Page 37: 二进制、数制及其 相互转换

• 举例(十进制数)• 对十进制数,如果想从 9 得到结果值 5 ,可以用减法:• 9 – 4 = 5• 已知 4 的补数为 10 – 4 = 6 ,即 4 与 6 互补。因此 9 – 4 可以改写为加法:• 9 + 6 = 15• 在去掉高位 1 ,得 5 。

Page 38: 二进制、数制及其 相互转换

• 在计算机中,以一个有限长度的二进制位作为数的模,如果用 1 个字节表示一个数,一个字节为 8 位,模为 28 。因为逢 28 就进一,在内存中情况为:• 1 00000000• 进位被丢弃。• 补码是这样规定的:• 正数:其原码、反码、补码相同。例如, +7 的补码也是 00000111 。• 负数:最高位为 1 ,其余各位为原码的相应位取反,然后对整个数加 1 。

Page 39: 二进制、数制及其 相互转换

• 负数:最高位为 1 ,其余各位为原码的相应位取反,然后对整个数加 1 。例如:• -7 的原码: 10000111• -7 的补码:第①步 11111000 (最高位不变,对其余各位取反。)• 第②步 +1• 结果 11111001• 即对 +7 各位取反加 1 。• 数值原码反码补码

Page 40: 二进制、数制及其 相互转换

• 由负数的补码求其原码,只须按由负数的原码求其补码的逆过程去做即可。• 也可以这样:补码中的最高位不改变,其余各位取反加 1 ,这就得到原码。如: 11111001 ,先变成 10000110 ,再加 1 得 10000111 ,它是 -7 的原码。• +0 的补码表示为: 00000000• -0 的补码也是: 00000000• -0 的补码是这样求出的:• ① 最高位为 1 ,其余各位为原码取反,即对 0000000求反得 11111111 ;• ②加 1 ,得 100000000 ,进位 1 被丢弃(因为一个字节只能容纳 8 位, 28 只能被存储为 00000000 ),因此 -

0 的补码也是 00000000 。• 可知, +0 和 -0 的补码表示是相同的。或者说 0 的补码是唯一的。• 规定:补码 1000000 表示数值 -128 。

Page 41: 二进制、数制及其 相互转换

BCD 码 BCD 码是二进制编码的十进制数( Binary C

oded Decimal )的简写。有四位 BCD 码、六位BCD 码和扩展的 BCD 码三种。

• 1 、 8421BCD 码• 8421BCD 码曾被广泛使用,它用四位二进制数表示一个十进制数字,四位二进制数从左向右其权分别为 8 、 4 . 2 、 1 。为了对一个多位十进制数进行编码,需要有和十进制数的位数一样多的四位组。显然, 842lBCD 只能表示十进制数的 0 - 9 十个字符。

Page 42: 二进制、数制及其 相互转换

• 2 、扩展 BCD 码• 8421BCD 码只能表示十个十进制数,自然字符数太少。即使后来产生的六位 BCD 码也只能表示 64 个字符,其中包括十个十进制数, 26 个英文字母和 28 个特殊字符。而在某些场合,还需要区分大、小写英文字母。扩展 BCD 码( Extend

ed Binary Coded Decimal Interchange Code )缩写为 EBCDIC ,它由 8 位组成,可表示 28 = 256 个符号。 EBCDIC 码就是为此提出的。

• EBCDIC 码是常用的编码之一, IBM 及 UNIVAC 计算机系统均采用这种编码。

Page 43: 二进制、数制及其 相互转换

非数值数据的表示• 1 、字符数据的表示• ASCII 码( America Standard Code for I

nformation Interchage )是美国标准信息交换码,被国际化组织指定为国际标准,分为 7 位和 8 位两种版本。• 国际通用的是 7 位 ASCII 码,它已对大、小写英文字母、阿拉伯数字、标点符号及控制符等特殊符号编码,共 128 个字符。