310 likes | 464 Views
西南民族大学 编号 07 姓名 谢川. 2.2 进位计数制. 掌握二进制 、八进制、十进制、十六进制等计 数制的概念及其之间的转换方法。. 计数制 ── 是指用一组特定的符号和统一的规则来表示数值 的方 法。 进位计数制 ── 把一组特定的符号按先后顺序排列起来, 由低位向高位进位计数的方法。. 日常生活中:十进制. 计算机领域:二进制、八进制、十六进制. 一、常用的进位计数制. 4 个基本要素:. 数码. 基数. 数位. 位权.
E N D
西南民族大学 编号 07 姓名 谢川
2.2 进位计数制 掌握二进制 、八进制、十进制、十六进制等计 数制的概念及其之间的转换方法。
计数制── 是指用一组特定的符号和统一的规则来表示数值 的方 法。 进位计数制 ── 把一组特定的符号按先后顺序排列起来, 由低位向高位进位计数的方法。 日常生活中:十进制 计算机领域:二进制、八进制、十六进制 一、常用的进位计数制
4个基本要素: 数码 基数 数位 位权 数码──某种进位计数制中一组用来表示数值的符号。 例如:十进制的数码是0、1、2、3、4、5、6、7、8、9。 二进制的数码是0和1。
基数 ── 某种进位计数制中,所有能使用的数码的个数。 例如:十进制的基数是10。二进制的基数是2。 数位 ──数码在一个数中所处的位置。 例如:十进制数的个位、十位、百位等等。 位权 ── 是指在某种进位计数制中,每个数位上的数 码所代表的数值的大小,它是以基数为底的幂。 例如 : 十进制数 8 6 . 5 4 7 + + + + 7×102 8×101 6×100 5×10-1 4×10-2
实际上,任何一个数(无论什么进制)的值都可以用位权展开式(按权展开式)来表示,位权展开式又称为“乘权求和”。 一般的,一个有n位整数、m位小数的R进制数K,写成Kn-1Kn-2….K1K0 . K-1K-2….K-m其位权展开式为: (K)R =Kn-1×Rn-1+Kn-2×Rn-2+…K1×R1+ K0×R0+K-1×R-1+K-2 ×R-2 +…K-m×R-m
例如:十进制数3014.65的按权展开式为: 3014.65 = 3×10³ + 0×102 + 1×101 + 4×100 + 6×10-1 + 5×10-2 二进制数1011.01的按权展开式为: (1011.01)2 = 1×23+ 0×22+ 1×21+ 1×20+ 0×2-1+ 1×2-2
1、 二进制 只有两个数码:0和1,基数为2,进位法则是逢二进一,借一当二。 0 + 0 = 0 0 + 1 = 1 1 + 1 = 1 0 1 + 1 1 0 1 1 + 1 1 1 1 0 0 1 — 1 1 1 0 1 0 0 1 0 1 1 0
二进制各数位的权是基数2的幂次。二进制数整数部分 的位权从最低位开始依次是20,21,22,23,24,…..,小数 部分的位权从最高位开始依次是2-1,2-2,2-3,2-4,….. 例如:二进制数(1011.01)2可以写成如下按权展开式: (1011.01)2 = 1×23+0×22+1×21+1×20+0×2-1+1×2-2 也可用大写字母 B (Binary)表示!
计算机内部采用二进制! 主要原因如下: 1)、容易用器件实现 很容易找到有2种稳定状态的器件,分别表示“0”和“1”。 2)、运算规则简单:0+0=0 0+1=1 1+1=10 0×1=0 1×1=1 可以简化逻辑电路的设计。 3)、适合逻辑运算 逻辑代数是逻辑运算的理论基础,而“0”和“1”刚好和逻辑代数中的“false”和“true”相对应。 (2>3)= false (3>2)= true
几个常用的二进制数: 111 = 1000 – 1 按权展开为 1×2 3 - 1 = 7 按权展开为 1×2 4 - 1 = 15 1111 = 10000 – 1 ….. ….. 1111111 = 10000000 – 1 . 按权展开为 1×2 7 - 1 = 127 11111111 = 100000000 – 1 按权展开为 1×2 8 - 1 = 255
2、 八进制 有8个基本数码:0、1、2、3、4、5、6、7,基数为8,进位法则是逢八进一,借一当八。 八进制各数位的权是基数8的幂次。 例如:八进制数(2317.06)8,按权相加展开式为: (2317.06)8=2×8³+3×8²+1×8¹+7×80+0×8-1+6×8-2 也可用大写字母 O (Octonary)表示!
3、 十六进制 有十六个基本数码:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,基数为16,进位法则是逢十六进一,借一当十六。数码A~F分别对应表达十进制数的10~15。 十六进制各数位的权是基数16的幂次。 例如:十六进制数(58AF.9)16,按权展开式为: (58AF.9)16 =5×16³+8×16²+10×16¹+15×160+9×16-1 也可用大写字母 H(Hexadecimal)表示!
二、不同进位计数制之间的转换 日常生活中习惯使用十进制数,而计算机内部使用二进制进行运算,由于二进制数位数很多,在书写编程时我们又习惯使用八进制或十六进制,因此必然产生不同进位计数制之间的相互转换问题。 1、 二、八、十六进制数转换到十进制数 方法:二、八、十六进制数转换到十进制数只需按相应进位计数制的位权展开式进行乘权求和,得到的结果即为相应的十进制数。
例 1: (1011.01)2 = 1×23 + 0×22 + 1×21 + 1×20 + 0×2-1 + 1×2-2 = 11.25 例2: (2013)8 = 2×83 + 0×82 + 1×81 + 3×80 = 1024 + 0 + 8 + 3 = 1035 例3 : (1AF.4)16 = 1×162 + 10×161 + 15×160 + 4×16-1 = 256 + 160 + 15 + 0.25 = 431.25
2、 十进制数转换到二、八、十六进制数 (1)十进制数转换成二进制数,整数部分和小数部分 分开处理。 对整数部分是一个连续除2的过程:把要转换的数,除以2,得到商和余数,将商继续除以2, ….. 直到商为0。最后将所有余数倒序排列,得到的数就是转换结果。─ 除基取余法 对小数部分是一个连续乘2的过程:把要转换的数,乘以2,取整数,再对小数部分继续乘以2, ….. 直到小数部分为0或取得要求的小数位数为止。 ─ 乘基取整法
例4:把十进制数125.37转换为二进制数。 • 对整数部分125: 除数 被除数 余数 2 125 . . . . . . . 1 2 62 . . . . . . . 0 2 31 . . . . . . . 1 倒 排 2 15 . . . . . . . 1 2 7 . . . . . . . 1 2 3 . . . . . . . 1 2 1 . . . . . . . 1 0 于是: 125 = (1 1 1 1 1 0 1)2
② 对于小数部分0.37 : 0.37 × 2 = 0.74 …… 取整数 0 0.74× 2 = 1.48 …… 取整数 1 顺 排 0.48 × 2 = 0.96 …… 取整数 0 0.96 × 2 = 1.92 …… 取整数 1 0.92 × 2 = 1.84 …… 取整数 1 0.84× 2 = 1.68 …… 取整数 1 于是:0.37≈(0.010111)2 综合两部分,得到转换结果:125.37≈(1111101.010111)2
想一想: 十进制整数→二进制数,能不能不用除基取余法? ——拼凑法 1 9 = 1 6 + 2 + 1 = (1 0 0 0 0 + 1 0 + 1)2 = (1 0 0 1 1)2 92 = 64 + 16 + 8 + 4 = 1×26 + 0×25 + 1×24 + 1×23 + 1×22 + 0×21 + 0×20 = (1 0 1 1 1 0 0)2
(2)十进制数转换成八进制和十六进制的方法和转换 为二进制的方法类似,唯一的变化是基数不同。 十进制数转换成八进制数,整数部分是除8取余数,倒序排列;小数部分乘8取整,顺序排列。 十进制数转换成十六进制数,整数部分是除16取余数,倒序排列;小数部分乘16取整,顺序排列。
例5:把十进制数2738.576转换为八进制数。 ①对于整数部分: 余数 被除数 除数 2738 . . . . . . . 2 8 倒 排 8 342 . . . . . . . 6 42 8 . . . . . . . 2 5 8 . . . . . . . 5 0 于是整数部分:2738 =(5262)8
②对于小数部分: 0.576×8 = 4.608 …………取整数 4 0.608×8 = 4.864 …………取整数 4 顺 排 0.864×8 = 6.912 …………取整数 6 0.912×8 = 7.296 …………取整数 7 0.296×8 = 2.368 …………取整数 2 于是小数部分: 0.576 ≈(0.44672)8 综合两部分,得到转换结果: 2738.576 ≈ (5262.44672)8
例6:把十进制数8552.38转换为十六进制数。 ①对于整数部分: 除数 被除数 余数 8552 . . . . . . . 8 16 倒 排 16 534 . . . . . . . 6 33 16 . . . . . . . 1 2 16 . . . . . . . 2 0 于是整数部分:8552 =(2168)16
② 对于小数部分: 0.38×16 = 6.08 …………取整数 6 0.08×16 = 1.28 …………取整数 1 顺 排 0.28×16 = 4.48 …………取整数 4 0.48×16 = 7.68 …………取整数 7 0.68×16 = 10.88 …………取整数 10 (A) 于是小数部分:0.38 ≈(0.6147A)16 综合两部分,得到转换结果: 8552.38 ≈ (2168.6147A)16
3、 二、八、十六进制数之间的转换 八进制数的基数是8 (8=23),十六进制数的基数为16 (16=24)。由于二进制、八进制和十六进制的基数之间具有2的整指数倍的关系,因而可十分方便地直接进行转换。 二进制数转八进制数的方法:以小数点为中心,整数部分往左每3位二进制位为一组进行分组,最后一组位数不够在左边添0补足;小数部分往右每3位二进制位为一组进行分组,最后一组位数不够在右边添0补足。然后将每组的3位二进制数对应转换成一位八进制数,连起来即可。─ 三位一并法
例7:把(1 0 1 1 1 0 1 1 1 1 . 0 1 0 1 1 0 1)2 转换为八进制数。 对照表 110 100 . 010 001 011 101 111 1 3 5 7 . 2 6 4 转换结果为: (1011101111.0101101)2 = (1357.264)8
反过来,八进制数转二进制数的方法就是将八进制数每个数位上的数对应转换成3位的二进制数再将它们串起来即可。─ 一分为三法 例8:把(12345.67)8 转换为二进制数。 1 2 3 4 5 . 6 7 001 010 011 100 101 . 110 111 转换结果为: (12345.67)8 = (1 010 011 100 101 . 110 111)2
二进制数与十六进制数之间的转换方法同二进制与八进制间的转换方法类似,唯一的变化是每4个二进制位对应1个十六进制位。 ─ 四位一并法、一分为四法 例9:把(1 1 1 0 1 1 . 0 1 1 0 1 0 1 )2 转换为十六进制数。 0011 1011 . 0110 1010 对照表 3 B . 6 A 转换结果为:(111011.0110101)2 =(3B.6A)16
例10 :把(20DC . 4A1B)16 转换为二进制数。 0 D C . 4 A 1 B 2 0010 0000 1101 1100 . 0100 1010 0001 1011 转换结果为:(20DC.4A1B)16 =(10 0000 1101 1100 . 0100 1010 0001 1011)2 10转2最基本!如果10转8或16,可先10转2,再用上述方法转到8或16即可。 课后思考:八进制和十六进制之间怎样相互转换?