我是靠谱客的博主 轻松仙人掌,最近开发中收集的这篇文章主要介绍数字电子技术学习(一)——数制和码制,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、计算机常用的数制

1.十进制(逢十进一)

        十进制是日常生活中最常使用的进制数,只有0~9十个数字符号。

如  =

2.二进制(逢二进一)

        二进制是数字电路中应用最广泛的进制数,无论是其他任何语言都要转换成二进制电脑或者其他机器才能识别,因此二进制又称为“机器语言”,它只有0、1两个数字符号。编程时用“0b”或“0B”表示二进制。

如 = 

3.十六进制(逢十六进一)

        十六进制常用于程序编写,有0~9、A(10)、B(11)、C(12)、D(13)、E(14)、F(15)共16个符号,字母不区分大小写。编程时用“0x”或“0X”表示十六进制。

如 = 

4.八进制(逢八进一)

        八进制用得比较少,只出现在某些特殊场合,只有0~7八个数字符号。编程时用“0o”或“0O”表示八进制。

如 = 

几种进制的对比:

十进制二进制八进制十六进制
000000000
010001011
020010022
030011033
040100044
050101055
060110066
070111077
081000108
091001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

5.不同进制之间的转换

(1)二-十六转换(“4位4位法则”)

        ①二进制->十六进制

        技巧:以小数点为分界线,分别往左往右 每4位 将二进制转换成十六进制。

       如  = 

        ②十六进制->二进制

        技巧:将每一位十六进制数转换成4位二进制数。(特别重要,如十六进制数 2 转换成二进制数需要写成 0010,不可写成10)

        如 = 

(2)二-十转换

        ①二进制->十进制

        解释一下权重这个概念:

例如 十进制中数值1314.521,千位的权重是(1000)、百位的权重是(100)、十位的权重是(10)、个位的权重是(1),十分位(也就是小数点后一位)的权重是(0.1),百分位的权重是(0.01),千分位的权重是(0.01),所以 = 。

再例如 二进制数值 101.101,(注:以小数点为分界线,从左开始数为整数的第1位、第2位······,从右边开始数为小数的第1位、第2位······)整数第1位权重是(1),整数第2位权重是(2),整数第3位权重是(4),小数第1位权重是(0.5),小数点第2位权重是(0.25),小数点第3位权重是(0.125),所以 =  = 1 * 4 + 0 * 2 + 1 * 1 + 1 * 0.5 + 0 * 0.25 + 1 * 0.125 = 5.625 。

这就一不小心把二进制转换成十进制啦!

        ②十进制->二进制(整数部分除2取余,从下往上读余数,小数部分乘2取整,从上往下读整数

如:

整数部分:21                                                                                        

                  21 ➗ 2  = 10·······1                                                                           

                  10 ➗ 2  =  5 ·······0                                                                         

                  5   ➗ 2  =  2 ·······1                                                              

                  2   ➗ 2  =  1 ·······0                                                                           

                  1   ➗ 2  =  0 ·······1                                                               

                  0   ➗ 2  =  0 ·······0                                                                            

当商和余数都为0时,从下往上读余数,整数部分结果:010101                                                                                     

小数部分:0.342                                     

                  0.342 * 2 = 0.684  整数为  0    

                  0.684 * 2 = 1.368  整数为  1

                  0.368 * 2 = 0.736  整数为  0(注意:减去整数部分后的小数部分继续乘以2

                  0.736 * 2 = 1.472  整数为  1

                  0.472 * 2 = 0.944  整数为  0

                  0.944 * 2 = 1.888  整数为  1

显然,结果是无穷无尽的,在这里我们就保留6位,从上往下读整数,010101

最终答案010101.010101

(3)二-八转换(“3位3位法则”)

        ①二进制->八进制

        技巧:以小数点为分界线,分别往左往右 每3位 将二进制转换成十六进制。

       如  = 

        ②八进制->二进制

         技巧:将每一位八进制数转换成3位二进制数。(特别重要,如八进制数 2 转换成二进制数需要写成 010,不可写成10)

        如 = 

6.二进制算数运算

(1)原码

        二进制的正负号是在二进制数前加一位符号位,符号位为0表示二进制数为正数,符号位为1表示二进制数为负数。这种形式的数称为原码。

如:(-5) 1 101                   ​​​​​​(+7) 0 111

(2)反码

        若二进制数为负数,则将其原码中除符号位的每一位进行取反,即1变成0,0变成1,这个数称为原码的反码。若二进制数为正数,则这个数的反码和原码相同。

如:(-5的反码)1 010           (+7的反码)0 111

(3)补码(计算机运算都是补码的运算)

        在计算机做减法运算时,如果两个数是原码,则需要比较两个数的绝对值大小,才能确定最后结果的正负号,这个操作过程需要比较电路和减法电路;若两个数是补码形式,则在省略进位的前提下,两个数相减,相当于两个数的补码进行相加,可以看出,这个操作过程就省去了比较电路,可以使电路结构大为简化。

        若二进制数为负数,则这个数的补码为其反码+1(记住就行);若二进制数为正数,则这个数的补码和原码相同。

需要注意下面两点:

①两同符号数相加时,它们的绝对值之和不可超过有效数字所能表示的最大值,否则计算出错。

②两个加数的符号位最高有效数字位的进位相加 得到结果(再舍弃进位)就是和的符号位。

来4个计算题帮助理解上面两点,用二进制反码计算  15+5、15-5、-15+5、-15-5

首先两个数的绝对值之和为20,4位二进制数能表示的最大值为15(1111),5位二进制数能表示的最大值为31(11111),所以20我们需要用5位二进制数才能表示,再加上一个符号位,共6位。

+15的补码:0 01111(与其原码相同)

  +5的补码:0 00101(与其原码相同)

 -15的补码:1 10001(其反码+1)

   -5的补码:1 11011(其反码+1)

如上图,+15 - 5 = +10,+10的符号为 加数+15的符号位 加上 加数-5的符号位 再加上 最高有效数字位的进位 得10(再舍弃进位1,最后符号位为 0),其他 和数 的符号位同理。

多做题!多做题!多做题!重要的事情说三遍!!!

下面的内容大家了解一下就ok!不用记,写代码的是可以百度的。

二、计算机常用的编码

1.十进制代码

8421码

(BCD码)

余3码2421码5211码余3循环码
00 0 0 00 0 1 10 0 0 00 0 0 00 0 1 0
10 0 0 10 1 0 00 0 0 10 0 0 10 1 1 0
20 0 1 00 1 0 10 0 1 00 1 0 00 1 1 1
30 0 1 10 1 1 00 0 1 10 1 0 10 1 0 1
40 1 0 00 1 1 10 1 0 00 1 1 10 1 0 0
50 1 0 11 0 0 01 0 1 11 0 0 01 1 0 0
60 1 1 01 0 0 11 1 0 01 0 0 11 1 0 1
70 1 1 11 0 1 01 1 0 11 1 0 01 1 1 1
81 0 0 01 0 1 11 1 1 01 1 0 11 1 1 0
91 0 0 11 1 0 01 1 1 11 1 1 11 0 1 0
8 4 2 12 4 2 15 2 1 1

①8421码又称BCD码,是十进制代码中最常见的一种,由于代码中从左到右每一位1分别表示8、4、2、1,所以称为8421码。2421码、5211码的编码方式和8421码相同,只是用途不一样。后面章节会继续学习。

②余3码,若把每一个余3码看作4位二进制数,则它的数值要比它所表示的十进制码多3,所以称余3码。如果两个余3码相加,所得的和比十进制数的和多6,所以,在进行十进制加法运算时,若两数之和为10,正好等于二进制数的16,便自动产生了进位信号。

③余3循环码的主要特点是相邻两个代码之间仅有一位的状态不同,它属于下面说的格雷码。

2.格雷码(可靠性代码)

编码顺序二进制代码格雷码
000000 0 0 0
100010 0 0 1
200100 0 1 1
300110 0 1 0
401000 1 1 0
501010 1 1 1
601100 1 0 1
701110 1 0 0
810001 1 0 0
910011 1 0 1
1010101 1 1 1
1110111 1 1 0
1211001 0 1 0
1311011 0 1 1
1411101 0 0 1
1511111 0 0 0

        格雷码又称循环码,其每一位都按一定的规律变化,从0000开始,最右边一位的状态按“0110”顺序变化,右边第二位按“00111100”顺序变化,第三位按“0000111111110000”规律变化,最左边一位按“0000000011111111”变化,更多位的格雷码遵此规律。格雷码的应用在以后章节会学习到。表格中蓝色背景的代码就是上面所说的余3循环码(手机用户需要左划一下表格)。

3.ASCII码(美国信息交换标准代码)

天黑了,博主要去开摩的挣钱了,ASCII码的话,大家百度深入了解一下,编程时特别重要。

 

文章中如有错误,期望大家可以留言指出,咱们共同学习、共同进步,若有不懂的地方,欢迎询问,我会在等红灯的时候回复您。

最后

以上就是轻松仙人掌为你收集整理的数字电子技术学习(一)——数制和码制的全部内容,希望文章能够帮你解决数字电子技术学习(一)——数制和码制所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部