「数字电子技术基础」2.数制和码制

数码

这里的数码不是数码相机的数码。数码相机是指使用数字电路技术的照相机。而本章讨论的数码是一些数字&符号。「为什么会有符号呢,因为十六进制中有ABCDEF哦」

数制与码制

数码可以表示一个数量,也可以传递一些信息。比如110这个数码:

1.表达出壹佰壹拾整

2.表示报警电话

数制

数制是指使用数码来表示数值大小。在研究数制是关心的问题是每一位的构成和从低位到高位的进位规则。比如十进制由0-910个数字,+-号和小数点组成,每逢10向上进一位。由何时进位,产生的区别,称作进位制,简称进制。比较常用的有二进制,八进制,十进制,十六进制。对应的英文缩写:BIN,OCT,DEC,HEX

不同位置的1表示的数值称为这一位的“权” (weight)

首先明确一下位的概念,数字abc.def中,c是第0位,也就是以小数点前第一位为第0位。向前则为1,2,3;向后就是-1,-2,-3

每一位的权为,其中W为进位制,二进制就是2,十进制就是10;i为数字所在的位

不同进制的数绝对大小的运算公式为:

 进制转换

手工转换方法就不聊了,第一讲讲卡西欧fx-991CH X 计算器的操作

方法一:

菜单-3:基数

首先选择被转换数的进制

输入待转换的数字,按“=”

再选择需要转换到的进制

 方法二:

菜单-3:基数

首先选择需要转换到的进制

OPTN,按下键翻到第二页

里面小写的dhbo分别代表十、十六、二、八进制,选择被转换数的进制

输入被转换数,按“=”

四种进制对应的按键如图:

 

小数

这里提供一种别样的理解思路

用有两位小数的二进制数举例:两位二进制数,总共有四种可能:00,01,10,11。也就是0.00和1.00之间的小数,总共有3个

 因此0.01->0.25;0.10->0.50;0.11->0.75。所谓小数就是通过数码的组合将0-1之间细分成很多等份,进而表示不足1的数值

原码&补码&反码

按照直观理解的,直接表示大小的数码就是原码

为了计算机使用二进制的方便,又发明了补码和反码

问题还要从表示负数开始。按照十进制的理解,10,前面加一个-号,就变成负数-10。但是这样在运算中除了0-9十个数码之外还需要用到+、-号。计算机连10个数码都砍成了01两个,怎么可能加上+-的符号呢?不过刚好,+-两个符号可以通过一位二进制数来表示。

因此我们规定第一位为符号位,0表示+,1表示-  比如10用二进制就是0 1010,-10是1 1010

这样就皆大欢喜了,仍然只有01两个数码「其实还有小数点.」但是新的问题在于,10+(-10)=0;但是01010+11010=100100,并不是0。不管怎么加,肯定也不可能加回真正的0。为了解决这个问题,产生了两种思路:

补码:

第一种解决思路,全0不可能,但1后面全是0是可能的。那么只要在运算后去掉这个1,就可以得到0了。有很巧二进制数是按位存取的,那么只需要溢出这一位就可以了。比如说01010+10110=10 0000,只看后五位,那就是0了。

因此在这里使用10110代表-10,我们称这个数为补码。补码的意义就是,和它对应的数字的相反数相加,溢出一位1,得到0。在这里就定义了补码

这里的n表示二进制数的位数(整数部分)

关于2^n:

n位二进制数,相加变成n+1位,除首位为1外,其他位都为零。按照权值转化关系,这个数应该是2^n

这是一种解决思路,但还有另外一种解决思路

反码:

既然怎么加都加不成0,那么我把每一位全加成1,再取反(电路实现中就是使用反相器),不就可以得到真正的0了吗?比如01010+10101=111111,再对这个数按位取反=0

因此在这里使用10101代表-10,这就是反码。反码的意义就是,和它对应的数字的相反数相加,得到一个全由1组成的数,输出后可以通过反相器方便地得到0。在这里就定义了反码

 这里的n也表示二进制数的位数(整数部分)

关于2^n-1:

n位二进制数,相加后所得仍为n位,最简单的求法就是用n+1位的最小数-1

讲到这里,再观察两种数码的格式,发现

  • 反码=原码除符号位以外按位取反
  • 补码=反码+1

这里再啰嗦一句,+1不是加的数字1,而是在最后一位上“1”,比如abc.def,实际是加0.001

码制

码制是指用数码表示不同的事物或事物的不同状态。数字电子电路最常用的还是二进制所以主要介绍二进制的编码

  • 自然二进制码:

就是一个一个的数字,比如一号选手二号选手,写成二进制就是01号和10号。也没有什么大小关系,只是用来区分。

但这个编码的好处就在于,区分的同时捎带了大小关系,所以进行加减乘除运算会格外方便。

  • BCD码:

使用二进制码表示十进制码。Binary Code Decimal. 十进制数码总共0-9十个,使用二进制编码也就至少需要四位二进制码。所以编码问题也就变成了从4位二进制数码共16种可能中选出10种来对应十进制的0-9.

BCD码分为有权码和无权码。有权码是指每一位都有固定的权值,按照每一位权值的不同,有8421码,5421码和2421码等。有权码和其对应的十进制数可以直接通过各位的权值计算得出。

无权码是不能这样计算得出的。比如格雷码。格雷码每一位的权值不固定,其规律是物理相邻的两个编码在数字上也相邻(只有一位不同)。这样在相邻的数字之间跳动时,就只需要改变一位的电平,不会出现改变了一部分而另一部分没有改变造成噪声。

偏权码介于有权码和无权码之间。按照有权码计算数值,再加上或减去一个固定的常数,就得到了偏权码。比如余三码,是在8421码的基础上+3得到的。

这里举个例子为什么除了最自然容易想到的8421BCD码之外,我们还要发明各种各样别的编码。比如要让6+5,写成二进制就是0110+0101=1011,但是0-9的编码只使用了0000-1001,运算后产生的1011是没有编码的。如果使用余三码处理这个问题,就变成了1001+1000=0001 0001,运算后得到了一个8421编码的二位数,解决了运算生成数未编码的问题。

  • ASCII码:

使用七位二进制码表示128个字符,包括字母、数字、符号或者控制命令。

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值