
第1章数制和码制本章从常用的十进制数开始,分析推导各种不同数制的表示方法及各种数制之间的转换方法。重点介绍了在数字设备中广泛使用的二进制数的运算问题,最后介绍几种常用的编码。81.1概述电子电路中的信号可分为两类:一类是模拟信号,随时间连续变化的信号,如模拟语言的音频信号和模拟图像的视频信号等。能够用来产生、传输、处理模拟信号的电路称为模拟电路:如图1(a)所示。另一类是数字信号,在时间和数值上都是不连续变化的离散信号,如欧诺个脉冲信号等。能够用来产生、传输、处理数字信号的电路称为数字电路。如图1(b)所示。uru图1(a)模拟信号图1(b)数字信号s1.2几种常用的数制数码:由数字符号构成且表示物理量大小的数字和数字的组合。数制:多位数码中每一位的构成方法,以及从低位到高位的进制规则。在数字电路中经常使用的计数进制除了我们熟悉的十进制之外,更多的是使用二进制和十六进制,有时也用到八进制。下面我们将对这几种进制数加以介绍。一、十进制数(D:Decimal)十进制是日常生活和工作中最常使用的进位进制数。在十进制数中,每一位有09十个数码,所以计数基数为10。低位和相邻高位间的进位关系是“逢十进一”,故称为十
第 1 章 数制和码制 本章从常用的十进制数开始,分析推导各种不同数制的表示方法及各种数制之间的 转换方法。重点介绍了在数字设备中广泛使用的二进制数的运算问题,最后介绍几种常 用的编码。 §1.1 概述 电子电路中的信号可分为两类: 一类是模拟信号,随时间连续变化的信号,如模拟语言的音频信号和模拟图像的视 频信号等。能够用来产生、传输、处理模拟信号的电路称为模拟电路;如图 1(a)所示。 另一类是数字信号,在时间和数值上都是不连续变化的离散信号,如欧诺个脉冲信 号等。能够用来产生、传输、处理数字信号的电路称为数字电路。如图 1(b)所示。 图 1(a)模拟信号 图 1(b)数字信号 §1.2 几种常用的数制 数码:由数字符号构成且表示物理量大小的数字和数字的组合。 数制:多位数码中每一位的构成方法,以及从低位到高位的进制规则。 在数字电路中经常使用的计数进制除了我们熟悉的十进制之外,更多的是使用二进 制和十六进制,有时也用到八进制。下面我们将对这几种进制数加以介绍。 一、十进制数(D:Decimal) 十进制是日常生活和工作中最常使用的进位进制数。在十进制数中,每一位有 0~9 十个数码,所以计数基数为 10。低位和相邻高位间的进位关系是“逢十进一”,故称为十

进制。数字符号:0,1,2,3,4,5,6,7,8,9计数规则:逢十进一基数:10权:10的幂对于任何一个十进制数N,都可以按权展开成如下形式:(N)1o =a,anjan-2..a,ao-a_ja-2..a-m=a,×10"+an--×10"-l+am-2×10n-2...+a,×10+ag×10°+a_×10-+a_×10-2...+am×10-mZa,x10例1:(244.76)=2×102+4×10+4×10+7×10+6×10-2上述十进制数的表示方法也可以推广到任意进制数。对于基数为R(R≥2)的R进制计数值,数N可以表示为:(N)=a,ar-an-2*,ao.a_a- *-a-m=a, ×R"+an- ×R"-+an-2 ×R"- ...+a,xR'+a×R°+a_,×R-+a-2×R-?..+a-m×R-"=a,×R-m式中,n代表整数位数,m代表小数位数,ai表示第i位数字,它是0、1、2.....R-1中的任意一个,Ri为第i位数字的权值。二、二进制数(B:Binary)目前在数字电路中应用最广泛的是二进制。在二进制数中,每一位仅有0和1两个可能的数码,所以计数基数为2。低位和相邻高位间的进位关系是“逢二进一”,故称为二进制。数字符号:0,1计数规则:逢二进一
进制。 数字符号:0,1,2,3,4,5,6,7,8,9 计数规则:逢十进一 基数:10 权:10 的幂 对于任何一个十进制数 N,都可以按权展开成如下形式: nm i i m m n n n n n n n n n m a a a a a a a a a a a a a a a a a 10 10 10 10 10 10 10 10 10 (N) . 2 2 1 1 0 0 1 1 2 2 1 1 10 1 2 1 0 1 2 + + 例 1: 2 1 0 1 2 10 (244.76) 2 10 4 10 4 10 7 10 6 10 + + + - + - 上述十进制数的表示方法也可以推广到任意进制数。对于基数为 R(R≥2)的 R 进 制计数值,数 N 可以表示为: nm i i m m n n n n n n n n m n a R a R a R a R a R a R a a a a a a a a a R a R a R 2 2 1 1 0 0 1 1 2 2 1 R 1 2 1 0 1 2 1 (N) . + + 式中,n 代表整数位数,m 代表小数位数,ai表示第 i 位数字,它是 0、1、2.R-1 中的任意一个,Ri 为第 i 位数字的权值。 二、二进制数(B:Binary) 目前在数字电路中应用最广泛的是二进制。在二进制数中,每一位仅有 0 和 1 两个 可能的数码,所以计数基数为 2。低位和相邻高位间的进位关系是“逢二进一”,故称为二 进制。 数字符号:0,1 计数规则:逢二进一

基数:2权:2的幂例2:(101011.011)=1×25+0×24+1×23+0×22+1×2+1×2°+0×2-+1×2-2+1×2-3=(43.375)1o三、八进制数(O:Octal)或Q在某些场合有时也使用八进制。八进制的每一位有0~7八个不同的数码,计数的基数为8,低位和相邻的高位之间的进位关系是“逢八进一”。数字符号:0,1,2,3,4,5,6,7计数规则:逢八进一基数:8权:8的幂例3:(125.04):=1×82+2×8+5×8°+0×8-+4×8-2=(85.0625)10四、十六进制(H:Hexadecimal)在编写程序时,常常使用十六进制数。十六进制数的每一位有十六个不同的数码,分别用0~9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)表示。数字符号:0~9,A,B,C,D,E,F计数规则:逢十六进一基数:16权:16的幕例4:(2F.6C)16=2×16'+15×16°+6×16-+12×16-2=(47.421875)1o不同进制数的对照表如表1所示:
基数:2 权:2 的幂 例 2: 10 3 5 4 3 2 1 0 1 2 2 1 2 43.375) (101011.011) 1 2 0 2 1 2 0 2 1 2 1 2 0 2 1 2 =( + + + + + + - - - 三、八进制数(O:Octal)或 Q 在某些场合有时也使用八进制。八进制的每一位有 0~7 八个不同的数码,计数的基 数为 8,低位和相邻的高位之间的进位关系是“逢八进一” 。 数字符号:0,1,2,3,4,5,6,7 计数规则:逢八进一 基数:8 权:8 的幂 例 3: 10 2 1 0 1 2 8 (125.04) 18 28 58 08 48 (85.0625) + + + - + - 四、十六进制(H:Hexadecimal) 在编写程序时,常常使用十六进制数。十六进制数的每一位有十六个不同的数码, 分别用 0~9、A(10) 、B(11) 、C(12) 、D(13) 、E(14)、 F(15)表示。 数字符号:0~9,A,B,C,D,E,F 计数规则:逢十六进一 基数:16 权:16 的幂 例 4: 10 1 0 1 2 16 (2F.6C) 216 1516 616 1216 (47.421875) + + - + - 不同进制数的对照表如表 1 所示:

表1几种进制数的对照表十进制二进制八进制十六进制000000011100012:2200103330011 444010055501016660110777011188101000991110011012A10101113B101112 14 c110015D13110116E14 1110F15171111
表 1 几种进制数的对照表 十进制 二进制 八进制 十六进制 0 0000 0 0 1 0001 1 1 2 0010 2 2 3 0011 3 3 4 0100 4 4 5 0101 5 5 6 0110 6 6 7 0111 7 7 8 1000 10 8 9 1001 11 9 10 1010 12 A 11 1011 13 B 12 1100 14 C 13 1101 15 D 14 1110 16 E 15 1111 17 F

S1.3不同数制间的转换一、二进制与十进制的转换1、二-十转换将二进制数转换为等值的十进制数称为二一十转换。转换时只要将二进制数按权展开,然后将所有各项的数值按十进制数相加,就可以得到等值的十进制数了。此方法也适用于任意进制数转换为等值的十进制数。例5:(1011.01)2=1×23+0×22+1×2+1×2°+0×2-+1×2-2=(11.25)102、十-二转换将十进制数转换为等值的二进制数称为十-二转换。整数部分:“除二倒取余”即十进制整数被2除,取其余数,商再被2除,取其余数..,直到商为0时结束运算,然后把每次的余数按倒序规则排列就得到等值的二进制数。小数部分:“乘二取整”即把十进制纯小数乘以2,取其整数(该整数部分不再参加后继运算),乘积的小数部分再乘以2,取整..,直到乘积的小数部分为0。然后把每次乘积的整数部分按正序规则排序,即为等值的二进制数。> 2例6:求(217)10=(解::21217...余1..余..2 1 108...余2 1 542127....余1.余.2 1 13.余.2 1 6
§1.3 不同数制间的转换 一、二进制与十进制的转换 1、二-十转换 将二进制数转换为等值的十进制数称为二-十转换。转换时只要将二进制数按权展 开,然后将所有各项的数值按十进制数相加,就可以得到等值的十进制数了。 此方法也适用于任意进制数转换为等值的十进制数。 例 5: 10 3 2 1 0 1 2 2 (1011.01) 1 2 +0 2 1 2 +1 2 +0 2 +1 2 (11.25) - - 2、十-二转换 将十进制数转换为等值的二进制数称为十-二转换。 整数部分:“除二倒取余” 即十进制整数被 2 除,取其余数,商再被 2 除,取其余数.直到商为 0 时结束运算, 然后把每次的余数按倒序规则排列就得到等值的二进制数。 小数部分:“乘二取整” 即把十进制纯小数乘以 2,取其整数(该整数部分不再参加后继运算), 乘积的小数 部分再乘以 2,取整.,直到乘积的小数部分为 0。然后把每次乘积的整数部分按正序规 则排序,即为等值的二进制数。 例 6:求(217)10 =( )2 解:∵ 2∣217 .余 1 2∣108 .余 0 2∣54 .余 0 2∣27 .余 1 2∣13 .余 1 2∣6 .余 0

213余1211.余1:(217)10=(11011001)2) 2例7:求(0.39)10=(解::0.39×2=0.78整数为0,整数为10.78×2=1.56整数为 10.56×2=1.120.12×2=0.24.整数为0.整数为00.24×2=0.480.48×2= 0.96整数为0+:(0.39)10=(0.011000)2说明:①小数部分转换时有时可能无法得到0的结果,这时应根据转换精度的要求取适当的位数。②此方法适用于十-任意N进制数的转换,转换时整数部分采用“除N倒取余”,小数部分采用“乘N取整”法。二、二进制与八进制的转换转换规则:三位二进制数对应一位八进制数。1、二-八转换将二进制数转换为等值的八进制数称为二-八转换。方法:将二进制数的整数部分从低位到高位每3位分为一组并化为等值的八进制数,同时将小数部分从高位到低位每3位分为一组并化为等值的八进制数。例8:(110101001001.10011)2=(110,101,001,001.100,110)2=(6511.46)
2∣3 .余 1 2∣1 .余 1 ∴(217)10 =(11011001)2 例 7:求(0.39)10 =( )2 解:∵ 0.39× 2 = 0.78 .整数为 0 0.78 × 2 = 1.56 .整数为 1 0.56 × 2 = 1. 12 .整数为 1 0. 12 × 2 = 0.24 .整数为 0 0.24 × 2 = 0.48 .整数为 0 0.48 × 2 = 0.96 .整数为 0 . ∴(0.39)10 =(0.011000)2 说明: ①小数部分转换时有时可能无法得到 0 的结果,这时应根据转换精度的要求取适当 的位数。 ②此方法适用于十-任意 N 进制数的转换,转换时整数部分采用“除 N 倒取余”,小 数部分采用“乘 N 取整”法。 二、二进制与八进制的转换 转换规则:三位二进制数对应一位八进制数。 1、二-八转换 将二进制数转换为等值的八进制数称为二-八转换。 方法:将二进制数的整数部分从低位到高位每 3 位分为一组并化为等值的八进制数, 同时将小数部分从高位到低位每 3 位分为一组并化为等值的八进制数。 例 8:(110101001001.10011)2 =(110,101,001,001.100,110)2 =(6511.46)8

2、八一二转换将八进制数转换为等值的二进制数称为八-二转换。方法:将八进制数的每一位用等值的3位二进制数代替。例9:(6574)8=(110,101,111,100)2=(110101111100)2三、二进制与十六进制的转换转换规则:四位二进制数对应一位十六进制数。1、二-十六转换将二进制数转换为等值的十六进制数称为二-十六转换。方法:将二进制数的整数部分从低位到高位每4位分为一组并化为等值的十六进制数,同时将小数部分从高位到低位每4位分为一组并化为等值的十六进制数。例10:(10111010110)2=(010111010110)2=(5D6)162、十六-二转换将十六进制数转换为等值的二进制数称为十六-二转换。方法:将十六进制数的每一位用等值的4位二进制数代替。例11:(76.EB)16=(01110110.11101011)2=(1110110.11101011)2四、八进制与十六进制的转换八进制与十六进制数进行转换时,可以先转换成二进制,进而再转换为相应的十六进制或八进制。方法与前述相同,不再赞述
2、八-二转换 将八进制数转换为等值的二进制数称为八-二转换。 方法:将八进制数的每一位用等值的 3 位二进制数代替。 例 9:(6574)8 =(110,101,111,100)2 =(110101111100)2 三、二进制与十六进制的转换 转换规则:四位二进制数对应一位十六进制数。 1、二-十六转换 将二进制数转换为等值的十六进制数称为二-十六转换。 方法:将二进制数的整数部分从低位到高位每 4 位分为一组并化为等值的十六进制 数,同时将小数部分从高位到低位每 4 位分为一组并化为等值的十六进制数。 例 10:(10111010110)2 =(0101 1101 0110)2=(5D6)16 2、十六-二转换 将十六进制数转换为等值的二进制数称为十六-二转换。 方法:将十六进制数的每一位用等值的 4 位二进制数代替。 例 11:(76.EB)16 =(0111 0110. 1110 1011)2 =(1110110.11101011)2 四、八进制与十六进制的转换 八进制与十六进制数进行转换时,可以先转换成二进制,进而再转换为相应的十六 进制或八进制。方法与前述相同,不再赘述

81.4二进制的运算一、二进制的算术运算当两个二进制数表示两个数量大小时,它们之间可以进行数值运算,称为算术运算。二进制算术运算的规则是“逢二进一”、“借一当二用”。例12:加法运算1001+01011110例13:减法运算1001-01010110例14:乘法运算1001X010110010000100100000101101二、反码、补码和补码运算1、基本概念原码:在二进制数的前面增加一位符号位,符号位为0表示这个数是正数,符号位为1表示这个数为负数。这种形式的数称为原码
§1.4 二进制的运算 一、二进制的算术运算 当两个二进制数表示两个数量大小时,它们之间可以进行数值运算,称为算术运算。 二进制算术运算的规则是“逢二进一”、“借一当二用”。 例 12:加法运算 1 0 0 1 + 0 1 0 1 1 1 1 0 例 13:减法运算 1 0 0 1 - 0 1 0 1 0 1 1 0 例 14:乘法运算 1 0 0 1 × 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 1 二、反码、补码和补码运算 1、基本概念 原码:在二进制数的前面增加一位符号位,符号位为 0 表示这个数是正数,符号位 为 1 表示这个数为负数。这种形式的数称为原码

反码:若二进制数为正数,则反码等于原码;若二进制数为负数,则在原码的基础上,符号位保持不变,其余各位依次取反,即可得到该负数的反码。补码:若二进制数为正数,则补码等于反码等于原码:若二进制数为负数,则补码=反码+1。例15:写出带符号位二进制数00011010(+26),10011010(-26),00101101(+45)和10101101(-45)的反码和补码。解:根据上述规则,可得到:原码:00011010100110100010110110101101反码:000110101110010100101101110100100010110111010011补码:00011010111001102、补码的运算:[X +Y]补=[X]补 +[Y]补运算规则:[X -Y]林 =[X]补 +[-Y]补补码减法运算可使符号位与数一起参加运算,二数相减变成减数变补与被减数相加,补码加减法的结果仍然是补码,若要得到结果的真值,必须求结果对应的原码。例16:用补码运算求(-25-6)解:设Z=-25-6=(-25)+(-6)[-25]=10011001B[-25]#=11100111B[-6]=10000110B[-6]#=1111 1010B则[2]=[-25-6]林=[-25]#+[-6]林=1110 000111100111B1010 B+ 1111111100001B
反码:若二进制数为正数,则反码等于原码; 若二进制数为负数,则在原码的基础上,符号位保持不变,其余各位依次取 反,即可得到该负数的反码。 补码:若二进制数为正数,则补码等于反码等于原码; 若二进制数为负数,则补码=反码+1。 例 15:写出带符号位二进制数 00011010(+26),10011010(-26),00101101(+45)和 10101101(-45)的反码和补码。 解:根据上述规则,可得到: 原码:00011010 10011010 00101101 10101101 反码:00011010 11100101 00101101 11010010 补码:00011010 11100110 00101101 11010011 2、补码的运算: 运算规则: 补 补 补 补 补 补 [ - ] [ ] [- ] [ ] [ ] [ ] X Y X Y X Y X Y 补码减法运算可使符号位与数一起参加运算,二数相减变成减数变补与被减数相加, 补码加减法的结果仍然是补码,若要得到结果的真值,必须求结果对应的原码。 例 16:用补码运算求(-25-6) 解:设 z=-25–6=(-25)+(-6) [-25]原=1001 1001B [-25]补=1110 0111B [-6]原=1000 0110B [-6]补=1111 1010B 则 [z]补= [-25-6]补=[-25]补+ [- 6]补= 1110 0001 1110 0111 B + 1111 1010 B 11110 0001B

结果为负数,将其转换为原码,可得z=-31。例:用补码运算求(64-10)解:设z=64-10=64+(-10)[+64]#=01000000B[-10]=10001010B[-10]#=11110110B则[z]#--[+64]林+[-10]#=00110110B01000000B+ 11110110B1001110110B结果为正数,原码补码相同,可得z=+54。S1.5几种常用的编码一、十进制代码为了用二进制代码表示十进制数的0~9这是个状态,二进制代码至少应当有4位。4位二进制代码一共有十六个(0000~1111),取哪十个数与0~9对应,有多种方案,如表2所示。表2几种常用的十进制代码十进制数8421码余3码2421码5211码余3循环码000000011000000100000100010100000100010110200100101001001000111300110110001101010101401000111010001110100501011000101110001100601101001110010011101
结果为负数,将其转换为原码,可得 z=-31。 例:用补码运算求(64-10) 解:设 z = 64-10=64+(-10) [+64]补=0100 0000B [-10]原=1000 1010B[-10]补=1111 0110B 则 [z]补==[+64]补+ [- 10]补= 0011 0110B 0100 0000 B + 1111 0110 B 10011 0110B 结果为正数,原码补码相同,可得 z=+54。 §1.5 几种常用的编码 一、十进制代码 为了用二进制代码表示十进制数的 0~9 这是个状态,二进制代码至少应当有 4 位。4 位二进制代码一共有十六个(0000~1111),取哪十个数与 0~9 对应,有多种方案,如表 2 所示。 表 2 几种常用的十进制代码 十进制数 8421 码 余 3 码 2421 码 5211 码 余 3 循环码 0 0000 0011 0000 0000 0010 1 0001 0100 0001 0001 0110 2 0010 0101 0010 0100 0111 3 0011 0110 0011 0101 0101 4 0100 0111 0100 0111 0100 5 0101 1000 1011 1000 1100 6 0110 1001 1100 1001 1101