目录
前言
- 数制和码制是学习数电和C语言的基础,建议大家好好理解一下,但是也不是特别重要,主要是了解一下进制的构成和运算,能够看懂是多少进制,运算比较重要,可以多看几遍。
- 推荐专栏数字电子技术基础(持续更新中)。
- 习题来源:阎石.数字电子技术基础(第六版)
- 需要教材答案电子版私信我。
- 码制请看常用的码制
- 欢迎评论区留言你所遇见的问题,也可以给博主留下建议。
- 如果您觉得有用,分享让更多的人看看吧!
数制和码制
数制:计数的体制,比如十进制计数,二进制计数,八进制计数,十六进制计数等。码制:对数字进行编码的体制。比如ASCII 、BCD码、8421码、5211码、余三码等。这里不过多介绍,知道什么是数制,什么是码制就好了。
1.十进制计数
说到进制,得是从简单的十进制说起。十进制为啥叫十进制呢?十进制计数体制是“满十进一”,一个数中它能够看见的数字是0~9,不会出现其他的数字。但是只是用0~9计数,我们最多只能数到9,这可就难受了。那比9大的数我们在生活中如何表示的嘞?
没错!就是这样表示的。这样看来,不难发现,当个位数超过9的时候,会向十位产生进位,也就是十位上的数会加1,这就是“满十进一”。这里也会发现,到9个位就会变为0,我们也可理解为低位从0~9这十个数数完了就该向高位进1. (这里低位意思是与比它本身大一位的相比较说的,高位是比它本身低一位相比较的,比如123,1对于2来说是高位,2对于1来说是低位,当然这里得是相邻的两位数)。
这里有这样的公式:
×。
每个符号表示啥意思呢?
光是这样看很抽象,举个例子:123.456用公式的字符表示。
这里也可以巧记:小数点前的数位置在0,往右为正,往左为负,直接数就好了。
当我们将10变成N时,可以得到任意进制转换成十进制的公式,即:
×;
其中表示权重,N为多少就是多少进制转换为十进制。
2.二进制计数
前面的十进制是为了给这部分做铺垫,这里是非常重要的部分。
2.1二进制转十进制
二进制,也就是基数是2,类比十进制,二进制应该是“满二进一”,并且出现的数字只能是0~1两个数,这里千万记住只能出现0和1组成的数。二进制转为十进制的公式为:
×
为了能够区分所写的数字表示为进制下的数字,通常我们会在数字的右下角加上角标,比如十进制下的101表示为,二进制下的表示为,八进制下的表示为······有时候我们也用B代替下标2,D代替下标10,O代替下标8.
2.2十进制转二进制
这二进制变十进制会了,那十进制变二进制不会,岂不是得打架了?
所以接下来教会你如何将十进制转换为二进制。
整数
方法一:
将十进制数除以2,得到余数和商,得到的商继续除以2取余(余数为0写0,为1写1),直到商为0时停止,将得到的余数从下往上排序,就可以得到这个十进制数的二进制了。具体为啥就不说了,记住方法就好了。
比如将十进制整数173变为二进制,过程如下:
方法二:
这个方法我觉得比较好,大家可以好好看下······
需要熟悉、、、、、、、······
然后找出原来十进制数在2的相邻次方的范围,将十进制数减去比它小的2的次方的数,得到差,继续寻找比差小的2的次方的数,得到差,继续重复,直到差为0为止。然后将从2的次方最大的开始,到着数到0,数一个,写一个,有就写1,没有就写0.
比如用这个方法将173变为二进制,过程如下:
这个方法主要是步骤简单,不需要一直除2,相信大家习惯使用这个方法后,会喜欢上的。
小数
小数化为二进制小数时,将小数乘以2,所获的数的其整数即是二进制小数部分,例如将化为二进制小数操作如下:
小数和整数同时出现时,只需要分开算,即:整数用整数的方法算,小数用小数的方法算。
3.八进制、十六进制计数
用二进制表示一个数通常需要很多位表示,
为了能够更容易表示一个数,通常还用到了八进制和十六进制表示。
3.1八、十六进制转十进制
首先需要清楚的是八进制表示的时候所用的数字是0~7,“满八进一”,十进制转八进制的公式:
×
十六进制比较特殊,和前面的进制进行类比,我们能够知道,十六进制表示的时候应该是0~15,“满十六进一”,十进制转十六进制的公式:
×
这里我们很容易发现,当10~15继续用其本身来表示时,多位数就很难知道到到底表示的是什么,划分的时候,1113是应该1 11 3?还是11 13······
所以我们得用一个东西代表10~15,这里我们用字母代替,即A(10)、B(11)、C(12)、 D(13)、E(14)、F(15),这里大小写字母都可以。
3.2十进制转八进制、十六进制
十进制转八、十六进制会了,那八、十六进制转十进制呢?
方法一:
其实和十进制转二进制的方法一 一样的,这里就不多说了,因为很少有人这么用。
方法二:
这个方法,用过的人都说好!!
我们先将十进制转换为等值的二进制,然后二进制从右往左划分,八进制是三个为一组,十六进制是四个为一组,然后将划分的变为与其等值的十进制数,所得的结果就是对应的进制数。
为啥这么弄呢?其实用到的原理就是、。
细心的老铁肯定发现了这个问题,为啥呢?
其实八进制能够出现的数字是0~7,用三位二进制数就可以表示出来,所以用000~111就可以表示八进制的数,所以可以这么用。十六进制也是同样的原理,就不多说了。
4.不同进制之间的转换
这里主要讲的是十进制、二进制、八进制、十六进制之间的转换,需要将十进制转为二进制,或者将二进制转为十进制。所以十进制和二进制之间的转换很重要。
列转为行方法 | 十进制 | 二进制 | 八进制 | 十六进制 |
十进制 | 1.2.2十进制转二进制方法二 | 转为二进制后将数划分为三个为一组,将每组变为相应的十进制数 | 转为二进制后将数划分为四个为一组,将每组变为相应的十进制数 | |
二进制 | × | 将数划分为三个为一组,将每组变为相应的十进制数 | 将数划分为四个为一组,将每组变为相应的十进制数 | |
八进制 | × | 每一位变为三位表示的二进制 | 先变为二进制,再将二进制划分为四个为一组,将每组变为相应的十进制数 | |
十六进制 | × | 每一位变为四位表示的二进制 | 先变为二进制,再将二进制划分为三个为一组,将每组变为相应的十进制数 |
所以可以发现,八进制和十六进制与其他进制之间的转换关系可以总结为:
先将八/十六进制转换为等值的二进制,然后进行划分后变为相应的十进制数。来点例题就能体验到了。
习题
例1.1(P18)为了将600份文件顺序编码,如果采用二进制编码,最少需要用几位?如果改用八进制或十六进制代码,则最少各需要用几位?
解析:这个题就是需要将600这个数转换为相应的二进制、八进制、十六进制。
因为问的是需要多少位,所以数出结果是多少就好了。
答案:二进制:10位,八进制:4位,十六进制:3位。
例1.2(P18)将下列二进制整数转换为等值的十进制数。
(1);(2);(3);(4);
例1.3(P18)将下列二进制小数转换为等值的十进制数。
(1);(2);(3);(4);
例1.4(P18)将下列二进制数转换为等值的十进制数。
(1);(2);(3);(4);
例1.5(P18)将下列二进制数转换为等值的八进制数和十六进制数。
(1);(2);(3);(4);
例1.6(P18)将下列十六进制数转换为等值的二进制数。
(1);(2);(3);(4);
例1.7(P18)将下列十进制数转换为等值的二进制数和十六进制数。
(1);(2);(3);(4);
法一:
法二:
例1.8(P18)将下列十进制数转换为等值的二进制数和十六进制数。要求二进制数保留小数点以后8位有效数字。
(1);(2);(3);(4);
例1.9(P18)将下列十进制数转换为等值的二进制数和十六进制数。要求二进制数保留小数点以后4位有效数字。
(1);(2);(3);(4);
随手点赞一次,运气增加一份!!