1.数电复刻 之 数制码制和运算

上完课发现自己看的书的内容有点浅了,复刻


1.换算:

二进制--B
八进制-O
十进制-D
十六进制-H
小数的精确度问题:
例如要求精度1%
就是2^-m <=0.01,换算成 2^m >=10^-2
两边同时用log,即得到 m lg2 >=2
m >=6.6,所以m取7

1.二 ===》十

以小数点为起点
小数点左边第一位是 20,往后依次21,22
小数点右边第一位是2 -1,往后依次2-2,2-3

最后所有的求和即可

技巧:理解二进制的运算,并学会利用来简化运算

对于例如 1111 这种2进制数,可以采用 24 - 1这样来简化运算


2.十 ===》二

整数部分:反写的除法/2,得到的余数就是二进制

小数部分:正写的乘法×2,得到的数的整数部分,即使二进制

注意:顺序问题,统一整数和小数:所有都是从小数点开始的,所以看起来就像整数是倒叙,
小数是是正叙一样

3.二 ===》八/十六

八进制和十六进制其实就是二进制的衍生物

1.从小数点开始,整数部分向左每三位 合成一个八进制数,小数向右每三位组合一个八进制数
	(按十进制算法)
2.十六进制和把进制一样,不过是每四位
注意:
1.不足位时补零,小数部分尤其注意
2.十六进制超过10的部分,从十对应A开始,依次推

4. 八/十六 ===》二

每一个数字还原成二进制,按原顺序排列就行了



2.二进制运算


1.加法
按照逢2进1的规律。列竖式

eg:

      0 1 0 1
  +   0 1 0 0
  =   1 0 0 1


2.乘法
按照十进制的算法,下面的数的每一位和上面的数相乘,答案错位写,最后相加


3.除法
除法和十进制的算法一样,最后也归结到加减法上


4.用加法算减法

大家可以发现 我一直在回避谈到减法,因为我的确一直没弄懂他的减法原理,而且现实应用中,我们的确不用减法,而是用加法代替减法,到底是怎么回事呢?


我们看下面这个图
在这里插入图片描述
现在想要把指针从十转到二,显然有两种办法:顺时针和逆时针

我们仔细观察会发现:
1.逆时针 《=》 10 - 8 = 2
2.顺时针 《=》 10 + 4 -12 = 2

由此应该能体会到为什么我们可以靠加法去算减法了吧

这显然是针对有周期的情况的解决办法,而我们的二进制是有周期的吗?
我们这里显然应该针对固定位数的二进制 对0000 这样的四位二进制,显然1111+1=0000
这就是一个周期,因为固定只有四位了,那进位的那个1就当做溢出而舍去

下面就是具体解法:

1.求出减数的补码(正数不变,负数的话所有位取反,最后加一)
2.和被减数相加
3.得到的是答案的补码
注意点:
1.我强烈建议先计算出 当前计算可能的最大值,确定好位数
2.强烈建议带符号,有了符号位也可以带入计算,比如被减的那个数(减数)就是看做负的数
3.补码不改变符号位
4.超出确定好的位数的都看作溢出而舍去
5.符号位在最前面单独出一位
6.与其说是算减法的时候需要用补码去计算,不如看做是有负数的时候用补码算
(我犯了一个傻错误,突发奇想把减法看做正数加负数,是不是就不需要用加补码的做法了呢,
	然后错了)
7.得到的答案是答案的补码,带入符号的好处是确定出你得到的是答案还是答案的补码

用下面两个公式描述一下我们上面说的过程

【X+Y】补 = 【X】补 + 【Y】补
【X-Y】补 = 【X】补 - 【-Y】补

大概就是这些了

作业:
在这里插入图片描述在这里插入图片描述***

总结解法:


1.计算待计算的数绝对值之和,确定位数
2.计算两数的补码
3.加上符号位,两数补码相加
4.超过确定的位数的进位全部舍去(反应了周期性)
	第一位是符号位
5.根据得到的补码计算出答案的原码
发布了108 篇原创文章 · 获赞 45 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/k_x_k_baoqian/article/details/100585801