从0学习数字电路(1)

俗话说得好,磨刀不误砍柴工,想要在ic验证领域不断前行,我们的基础知识必须十分扎实,这里而当基础知识包括但不限于c语言,数字电路,verilog等等。在这里,我将会新开一个章节,对数字电路进行重新的学习。只有将数字电路学好了甚至学透了,对各种各样的码,门电路,组合逻辑,时序逻辑烂熟于心,才能对ic又更进一步的理解。

不同数制之间的转换

首先,我们要了解数制。常用的有2进制(Binary),8进制(Octal),10进制(Decimal),16进制(Hexadecimal),他们的基数分别是2,8,10,16。

1.其他数制转换成10进制很简单,只需要按照D=\sum Ki\cdot N^{i-1},其中K是第I位的系数,N^{i-1}是第i位的权,N是基数,这里举一个例子大家就明白

( 1011.101 )b转化为10进制:1*23+0*22+1*2+1+1*2-1+0*2-2+1*2-3。

2.十进制转换二进制:正数部分反复除二取余数,从右到左排列;小数部分反复乘2取整数部分,从左向右排列。这里也举一个例子:

(30.25)d转化成二进制数:30%2=0(从右数第一位),15%2=1从右数第二位),7%2=1(从右数第三位),3%2=1(从右数第四位),1%2=1(从右数第五位),右边的:0.25*2=0.5取0(从左数第一位),0.5*2=1(从左数第二位),最后结果是11110.01。

3.二进制转16进制:整数部分从右向左每四个化为一组(不够的在左边补0);小数部分从左到右每四个划分位一组(不够的在右边补0):

1011100111.100101变成0010 1110 0111 .1001 0100,再写出对应的16进制编码就行了。即2E794.

4.16进制转换为2进制:只需要将每一位用对应的四位二进制数代替即可:

EC.A5变成1110 1100. 0100101。

5.二进制转8进制:以小数点位分割,正数部分从右向左每三个数划为一组(不够的在左边补0);

小数部分从左到右每三个数划位一组(不够的在右边补0):

1011100111.1001101变成001 011 100 111. 100 101对应的编码是1347.45。

6.8进制转2进制:将每一位用对应的三位二进制数代替即可。

二进制的运算

首先,二进制运算时逢2进1,乘法和除法可以转化成移位和加减操作,例如:10108+2=101010016+4=201014+1=5。并且通过补码运算,可以将减法运算转化成加法运算。

下面介绍下补码:由于正数符号位是0,因此正数的原码=反码=补码;负数的符号位是1,负数的反码是除了符号位之外的所有位按位取反,负数的补码是反码+1.我们还要知道,补码的补码即是原码。并且补码是不对称的,即例如补码1000代表-8,而不是0.对于4位的二进制代码,它能够表示的数值的范围是-8-707-8-1。我们在对补码进行加法运算的时候,数字的最高位药进到符号位上,但是符号位的进位是药舍弃的!!下面举一个例子:

用补码的方式计算20-25。首先两数字的绝对值i相加是45,大于32,小于64,因此数值位取6位,20的原码,补码是0010100-25的原码是1011001,反码是1100110,补码是1100111,两个补码相加是1111011,这是负数,补码的补码是原码,先求他的反码:1000100,再+1100101,是-5。

几种常用的编码

首先介绍下二十一进制代码,也叫BCD码,他是用四位二进制的代码(最多16个,选择其中的10个)来表示0-9.可以分为8421,2421,5211码等,这里面的数字表示每一位的权。还有一种码叫余三码,实在8421的基础上加3,即用3-12的二进制来表示0-9.而余三循环码是取4位格雷码中的3-12。

21进制码和二进制码还是右很多区别,比如说10进制的97.25的二进制是1100001.01,而他的8421码则是将每一位拆开,再用8421码来表示:9的bcd码是1001,7是0111,2是0010,5是0101

格雷码指的是相邻以为只有一位状态改变的码,在应用的时候可以减少代码转换时产生的噪音。

二进制与格雷码的转换也是有规律可循:从最有边一位开始,依次将每一位和左一位进行异或(异或:相同为0,不同位1),作为格雷码对应改为的值,最左边的一位保持不变:

5的二进制是0101,从左开始异或,最后为0111;格雷码1011,变成二进制就首位不变左一位和格雷码进行异或,从左往右进行位1101

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值