电路换算上的二进制数
讲了一个方法:二进制数转换为十进 制数采用加权法,就是上面说的例子。而十进制数转换为二进制数则分为整数部分和小数部分分别转换,整 数部分用除 2 取余法,小数部分采用乘 2 取整法,然后要列竖式来求解。一般来说,我们在进行应用的时 候,譬如数字电路,单片机中使用的数字都是整数,而且只需要我们快速的计算出这个数据即可,若按照除
2 取余法来求解,则太费时间,这里我讲一种方法,命名为"8421"法,可以快速的求解 255 以内的数据
(超过 255 的数据建议大家用计算器来求解,手算或者心算就太费劲了。)。这个方法就是利用权,一个 4
位的二进制数,它的每一位的权恰好是 8421,如图 3。
128 64 32 16 8 4 2 1
图 3 二进制数每一位的权
接下来我们就以一个具体的例子来说明这种方法的使用。先看二进制数转换为十进制数的例子,就是 上面说的 10110 吧,把它的每一位的权都标出来,如图 4。
16 8 4 2 1
1 0 1 1 0
图 4 二进制数转换为十进制数的例子
我们只要把数值是 1 的位的权加起来就可以得到对应的十进制数,即 16+4+2=22,完全一样。但是比列
式子快速的多了,如果熟悉了每一位的权之后我们都可以心算,快速的算出结果为 22。
接下来讲十进制数转换为二进制数的例子,把十进制数 55 转换为二进制数。开始运算之前先把图 3
画在草稿纸上,然后开始填 1,首先,55 在 64 和 32 之间,所以 64 处不能是 1,我们在 32 处写 1,这个
1 的权是 32,那么我们还剩下 55-32=23,比 16 大,我们在 16 的位置上写 1,这时候我们还剩下 23-
16=7,接着我们就可以在 4、2 和 1 的位置上分别写一个 1,32+16+4+2+1 恰好等于 55,所以我们在 其他的位置上写 0,把这个数写出来 110111,就得到了转换后的二进制数了。整个过程如图 5 所示。
|
采用这种方法可以快速的实现二进制数和十进制数的相互转换,这里要提醒大家一点了,我们只需要练习十进制数 255 以内的数据和二进制数之间的相互转换就可以了,太大的数据交给计算器来运算就好了,千万 不要为难自己,非要去计算 52369 的二进制数,那将让你失去许多乐趣的。相对于二进制数来说,我们只 要能计算 8 位以内的二进制数转换为十进制数就可,超过 8 位的还是交给计算器吧。当然了,每个人都有自 己的自由,如果某人要手工计算 32 位二进制数转换为十进制数或者把一个上亿的十进制数转换为二进制 数,我也没有办法。
在现实生活中,对于十进制数,我们自动的根据数据的大小调整数位,15 有两位有效数字,那么我
们写 15 就好,那么没有人会写成 00015 的,同样的 369 有三位有效数字,也没人会写成 00369,因为 在数字的前面加 0 不改变大小,所以我们通常是省略前面的 0。但在数字电路中有另外一种情况,譬如我们 制造好了一个电路后,能表示 8 位二进制数,那么就必须制造 8 个基本元件,每个基本元件存储一个二进制 数,那么表示任何一个数,都是这 8 个基本元件作为一个整体来表示的,这样就会遇到多余的 0,如表示十 进制数 30,那么就是 00011110,前面的 0 你不能省略,因为你不能说最前面的 3 个元件不存储数据了, 再者,电路造好之后你也不能随便的用刀砍掉一部分。所以,在我们数字电路以及单片机课程中,一般遇到 的二进制都是位数固定的,我们在写这些数据的时候一定不要省略前面的 0,那么这个固定的位数是多少呢?
8 的倍数,也就是说,一般来说都是 8 位数一组,或者是 16 位,32 位,64 位,128 位等。
针对单片机中二进制位数固定这一特点,这里有几个名词:位(bit),字节(Byte),字
(Word)。其中位就是二进制位,1 位就是一个二进制位,称为 1bit,简写 1b,1 字节代表 8 个二进制的
位,1Byte=8bit ,1 字代表 2 个字节,1Word=2Byte。Byte 可以简写作 B,我们可以得到如下公式:
1B=8b,1Word=2B=16b
随着计算机技术的发展,数据越来越多,我们还有几个单位,KB,MB,GB,TB,其关系为:
1KB=1024B= 210 B
1MB=1024KB= 220 B
1GB=1024MB= 230 B
1TB=1024GB=2 40 B
2.3 十六进制数出
- 整流电路(11-30)
- 单运放构成的单稳延时电路(11-29)
- 直流稳压电源电路(11-30)
- 基于ISP1581型接口电路的USB2.0接口设计(01-18)
- 单电源供电的IGBT驱动电路在铁路辅助电源系统中的应用(01-16)
- 为太阳能灯供电的低损耗电路的设计(01-22)