数制与逻辑函数

数制与编码

位进计数制

就是一种按进位方式实现计数的制度,简称进位制。

比如十进制是逢十进一,9+1=10
二进制是逢2进一,1+1=10

表示方法

主要有两种

位置记数法

(N)R = (kn-1kn-2…k1k0.k-1k-2…k-m)R
规定R下标一律用十进制的数表示

比如十进制的数 (123.123)10
二进制的数(1001.11)2

多项式记数法:

把一个数写成多项式的形式,其中系数部分为位置计数法相应位置的数,幂部分是位置的权重,以小数点为分隔,左边是从零开始的非负整数次,右边是从-1开始的负整数次。值得注意的一点是10指的是对应进制的10,比如8进制的10就是8,16进制的10就是16
在这里插入图片描述

举个例子
(12.1)10=1x101+2x100+1x10-1
(1.1)2=1x100+1x10-1=1+0.5=(1.5)10

有了这个方法我们就可以将任意进制向任意进制转化,做法就是把多项式中的所有数用对应进制的数进行替换,然后再做一系列乘法加法运算即可,以二进制向十进制转化为例(1.1)2=1x100+1x10-1=1x20+1x2-1=(1.5)10,但是呢,这个方法弊端很明显,我们对十进制的运算比较熟悉,其他进制的乘除啊什么的算起来很难受,而且这个方法还有一个弊端,就是小数的处理,比如我想要把二进制里的10-1转化成三进制,除不尽,很麻烦,所以,我们处理非十进制的数制转化一般是以十进制为桥梁。

数制转化

在这里插入图片描述
上面讲过了阿尔法进制到十进制的转化,接下来只要讲清楚10进制到β进制的转化即可

十进制转化为其他进制

整数部分处理

短除法:把十进制数的整数部分除要转化的进制的基,得到余数和商,记录余数,商再继续进行上述被除数的操作直到被整除,这时把我们记录的商从下到上写出来就是我们要的结果
比如我们要把十进制数75转化成5进制数
在这里插入图片描述
三次运算后,我们把记录的余数从下到上读取得到(300)5
原理简单提一下
现在假设我们已经把75表示成了5进制的多项式的形式,那么我们除5得到的余数0就是0次那项的系数,商就是原式去掉0次项后再除5的结果,那么继续这样操作就能陆续得到低次位的值。
75=3x52+0x51+0x50
第一次运算得到
商3x51+0x50,余数0
第二次运算得到
商3x50,余数0
第三次运算得到
商0,余数3
结果为300

小数部分处理

这个处理方法就比上面简单了。
取出要转化的十进制数的小数部分,不断乘以要转化成的进制的基数,记录整数部分,再取出小数部分进行上述操作直到小数部分为零(有时除不尽就一直不会是0)
把记录的整数部分按顺序写出来就是结果的小数部分,注意,这里是按顺序写,而上面整数部分的处理是倒序写不要搞混了,其实结合原理很好理解。
比如我要将十进制数0.703125转化为5进制数(只要前4位)
结果是(0.3224)5
在这里插入图片描述

原理:
也是差不多的思路,假设我已将十进制数表示成要转化成的进制的多项式形式,那么当我成以基数时,原来-1次的项就变成了零次项,然后我们的操作是获取整数部分,这样就得到了最高位的值一直继续下去就可以得到最终结果

整合

将一个十进制拆成整数和小数部分,然后按照上面的分开进行操作,最后把结果拼接到一起即可。

一种快速的方法

事实上,我们假设已经把一个十进制数拆成了要转化成的进制的多项式形式了,那么为什么不从最高位来取呢。
操作也很简单,比如要把35转化成二进制,找到离35最近的小于它的2的幂,32,嗯,所以最终结果一定有6位,最高位是1,将35减去32得到3,继续下去就可以得到最终结果100011
即35=32+2+1,当然这里没举小数的例子,操作当然也是一样的。
但是这个方法也有弊端,数比较小可以很快的算出,但是数字大一点的话就还是老老实实用之前的方法吧,像2143143514543145这样的数要找离他最近的2的幂不太容易

特殊进制之间的转化

这里讨论的是存在幂关系的进制,比如2,4,8,16,有一位对应几位或是几位对应一位的情形,非常方便
在这里插入图片描述
八进制是1位对应3位,4进制是一对二,这几个进制之间的转化可以通过二进制作为桥梁实现。
原理就是以q为公比等比数列相邻连续的k个数的和可以组成公比为qk的等比数列
因此此结论可推广到3,9,27之类的进制。

二进制编码

在这里插入图片描述

数字编码

有符号数

最高位为符号位1表示负,0表示正

原码

最初的表示方法,最高位表示符号,后面表示绝对值
比如1的原码是0001,-1的原码是1001

反码

在原码的基础上符号位不变,负数后面取反,正数不变,比如
1的反码是0001,-1的反码是1110

补码

在反码的基础上,正数不变,负数加一,比如1的补码是0001
-1的补码是1111
那么,为什么要整这一出呢,原码表示不是挺好的吗,其实补码有一个很好的性质,那就是加上补码能实现减法运算,比如1±1=10000,第一位溢出了,不取,所以结果是0,如果仔细观察的话,负数的补码和它对应的绝对值相加一定是10000(这里以4位数为例,8位的话就是100000000)那么-a的值为10000-a,由于前面溢出了不会体现在结果上,那么两数相加只要不出现两负数绝对值相加溢出或正数溢出的情况就不会有问题(事实上这种情况已超出能表示的范围)
还有一点,0的原码,反码,补码都是0
-0即补码1000表示-8
在这里插入图片描述

无符号数
二进制码

就是上面的没有符号位,这样就只有正数,范围也更大了,应为多了一位可以用

二-十进制编码(BCD码)

用二进制表示十进制的一种方法,很简单,用四位二进制数代表一个十进制数
对应关系就是二进制的值比如0001表示1,0110表示6,所以有6个是没用的
上面的权重为8421,所以叫做8421BCD还有其他权重的BCD
在这里插入图片描述
余三码讲一下,其他我不知道有什么用
规则是这样的:也是四位二进制对应一个十进制数,只是二进制数对应的值要比代表的数大3比如0101表示2
他的作用就是对8421码的补充,当两个8421BCD码相加结果溢出时要用改为余三码进行,但是不溢出时余三码结果是错误的:
在这里插入图片描述

其他

在这里插入图片描述
就是相邻的两个数都只有一位不一样

字符编码

ascii码

8位,最高位不用,0-127表示128个符号
下面给出ascii吗的一部分
在这里插入图片描述

汉字编码

gbk,utf-8什么的这里不做过多介绍了

逻辑函数

逻辑运算

与运算

,也叫逻辑乘,逻辑积,两个都为是结果才为是
不同输入对应输出如下
在这里插入图片描述
有时省略A·B之间的·,写成AB
真值表:
在这里插入图片描述
图示:
在这里插入图片描述

规律:遇0则为零,遇1结果不变

或运算

,又叫逻辑加或逻辑和
不同输入对应输出如下
在这里插入图片描述
真值表如下:
在这里插入图片描述
图示:
在这里插入图片描述
规律:遇到1变成1,遇到零不变

非运算

,不同输入对应输出如下:
在这里插入图片描述
就是把输入置反
图示:
在这里插入图片描述
规律:置反

异或与同或

异或就是两数相同结果为0否则是1,同或刚好相反
异或真值表:
在这里插入图片描述

异或表达式:
在这里插入图片描述
与离散数学中的环和一致,其实数电里的逻辑运算与离散数学中的集合运算一致,我自己对此的解释是数电中逻辑运算是对某个元素存在与否的讨论与集合是否包含某个元素一致。这里为了方便记忆,我们调用离散数学中环和运算的韦恩图:
在这里插入图片描述
蓝色部分为A,B环和运算的结果
同或就是异或的置反
在这里插入图片描述
规律:异或遇1置反,遇0不变在这里插入图片描述
同或与之相反
来道例题
在这里插入图片描述
这题思路很简单,只要将双方代入到异或同或的表达式中然后进行比较即可

总结

下图是上面运算的归纳以及一些他们的复合运算的图示:
在这里插入图片描述

正逻辑与负逻辑

是对高低电平谁代表一的讨论
正逻辑:用高电平表示逻辑1,用低电平表示逻辑0

负逻辑:用低电平表示逻辑1,用高电平表示逻辑0
一般用正逻辑
接下来给出正逻辑与负逻辑的运算之间的关系(就是在正逻辑下的某种运算,我把它的真值表的1,0互换后对应的运算),不给出证明
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值