血清vitb12高怎么回事:二进制与十进制的互换

来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 03:56:50

首先说说十进制是怎么回事吧。十进制是咱们最熟悉的。所以讲解起来不费劲。然后,你会发现十进制和二进制并没有什么本质的区别。

十进制里面有十个最基本的符号,0-9,所以,满十的时候,只能进位,因为一个位上最多只有这十中符号可以彼此区分了。

所以,十位上的1,代表了10个个位上的1,同理,百位上的1代表了10个十位上的1.也就是说,相邻的两个位,高位的1代表了10个低位上的1.这就是满10进1的含义。所以,十进制的123代表多少呢。这个问题,可以分解成1,2,3分别代表了多少,然后,123就代表了这三个数字各自所代表的数目之和。

1代表了10个十位上的1,而十位上的1又代表了10个各位上的1,所以百位上的1代表了1乘以10的平方。2代表了2乘以10的一次幂。3代表了3乘以1的0此幂。

所以123=1*(10**2)   +  2*(10**1)   +  3*(10**0)

**代表多少次幂。

实际上,二进制与十进制唯一的区别就在于他是满2进1.

所以,二进制的10代表多少呢?

各位的0代表0,高位的1代表1乘以2的一次幂,所以,  10=1*(2**1)  +  0*(2**0)=2.

所以,要把二进制转化成十进制,很简单,就是把他的各个位所代表的数目的大小加起来,就这么简单。

所以,二进制的111,转化成十进制,是多少呢?

111=1*4+1*2+1*1=7;

难一点的在于把十进制转化成二进制。

十进制的5,转化为二进制的多少呢。直接告诉你答案吧,是101.

现在我来分析一下为什么是这个答案。其实,这个问题的本质就是解答一个方程,这个方程用来确定二进制各个位上的值,究竟是0呢,还是1,因为二进制值有0和1嘛,所以就只有这两种可能性了。

首先看最低位。如果是1,那么这个二进制对应的数应该是一个奇数,为什么这么说呢,因为,除了最低位以外,其余的位,至少是2的倍数,所以都是整2整2的,所以,最低位应该是1,因为5是奇数嘛!

既然已经用最低位表示了一个1了,那么,其余位,只要表示剩余的4就可以了,因为5-1=4,这里听明白了没?

为了方便表达,我把转化之后的二进制数,表示成。。。。dcba吧,前面加。。。,是因为这个数究竟有多少位,事先你不知道,只有计算完了之后才知道。当然,在这里,最后表示成了二进制数101,所以,d=0,c=1,b=2,a=1;

如果明白了,那么继续往下进行。

从刚才的分析中,你应该看出点端倪来了。其实,十进制转化成二进制的过程,就是一个从低位开始,逐个确定二进制各个位的值的过程。从低位开始,是因为,越高位,他代表的数就越“整”,倒数第二位代表的是2,第三位代表的是4,第四位是8,每一次都会扩大两倍,越来越“整”,只有高位表达不了的,也就是被高位整除不了的,才丢给低位,刚才第一步就是这么做的。5除以2以后,余数是1,那么,这个1就丢给最低位了。其余的4,让高位来表示。

现在考察第二位,也就是b了。b代表是整2,而c代表整4,d代表整8,所以,只有可以被2整除但是却不能被4整除的那部分,会留给b来表示。由于现在要表示的是4,可以被4整除,所以b=0.

现在,轮到c了。同样的道理,只有能被4整除而不能被8整除的部分,留给c。由于这里刚好是一个4,所以,c=1,c的1,实际上代表的是4,所以,现在剩下0了,也就不用再继续往下表示了。

我刚才说的,只是问题的本质。至于比较方便的做法,实际上应该是教科书上的那个方法:

a=5%2=1,

5/2=2;

b=2%2=0;

2/2=1;

c=1%2=1;

1/2=0;

结束。

不知道我这么说你听明白了没有。我说的方法,和教科书上的方法,本质上是一样的。至于为什么是一样的,证明的过程留给你自己。

总结一下刚才的方法。刚才,为了让你能够更容易理解,我是从可操作性更强的一个角度来讲解的。事后诸葛亮一下吧。把问题解决以后,然后回头再总结总结,这是个好习惯。你可以从一个简单的问题中,获得很多很多。这是个好习惯。

实际上,越往高位走,越“整”,表示的额度越大,所以,要表示一个数,应该优先低位。为什么呢。因为,高位的表示能力很强,多大都能表示得下。要是某一位不够,再高两位总可以吧。所以说,越往高位,容量越大。但是,越往高位,他的分辨率就越小。反而是小的东西他们表达不了。就拿十进制来说吧。十位上,他只能表示整十整十的,1,2,。。。9这些比较小的他就表达不了了。百位就更加表达不了了。所以说,应该优先把那些比较“零碎”的部分,首先留给低位来表达。越“零碎”的越先表达。所以,我们操作的顺序是从个位开始的。个位表示完了,就轮到十位,百位,千位了。按照这个顺序,当最后剩下为0的时候,这个任务就完成了。我说得够详细了吧。希望你理解。不仅要理解,也要从我刚才讲解的过程中,学到一些学习的方法。其实,很多问题,当你理解了本质,你会发现其实很简单的。所以,不要追逐花哨的东西。把问题理解透彻了,你会发现什么东西都架不住你的分析。这个时候,你会发现原本看起来需要技巧的东西,其实,你只要分析到位了,他就不再需要技巧。大道至真,大道至简。就是这个道理。

再深入一点,给你讲讲小数部分的转化吧。

肚子饿了。呵呵。吃饭去了。回头接着给你讲解吧。

 吃完了。真舒服啊。接着给你讲吧。

刚才说的其实是整数部分的转化。小数部分的转化呢,其实也差不多。

假设小数部分是这样的形式:

X.abcd......

其中,X表示整数部分,.代表小数点。abcd就代表小数部分了。

小数部分,第一位的1代表0.5,第二位的1代表0.25,其次是0.125,0.0625,也就是每次缩小一半。这个也应该很好理解吧。

假设现在有一个十进制的0.875要转化成二进制数,如何表示呢。先来分析一下二进制的小数部分的规律吧。刚才已经讲过了,每个位上的1,能表示的额度,是越来越小的。所以,这次应该是把比较“整”的,大的部分先留给前面的位表示,剩下来的,由于每一位表示的是越来越小了,所以精度也越来越高,想要多高就有多高,所以,“零碎”的部分,留给后面的来表示就可以了。

0.875里面有一个0.5,所以第一位对应1,也就是说刚才那个X.abcd......里面,a=1,剩下来0.375,不足0.5,所以留给后面的来表示。

0.375里面有一个0.25,刚好第二位的1代表0.25,所以b=1,剩下0.125,c=1,剩下0,所以后面都是0了。也就是说可以到此结束了。

很简单吧。

不过有一点要注意。实际上,有可能存在一个数,这个数永远都没法结束。就好比1/3,要表示成十进制数,是一个无限循环小数。把一个十进制数表示成二进制数,也有类似的问题。这个怎么理解呢。先来看看小数点部分有什么规律吧。刚才已经看到了吧。每一次,每一位表示的都要比原来的小一半。也就是说,在数轴上,每一次,都把原来的相邻两个点,从中间劈开。把这个区间对半分。每次都如此。虽然可以把这个过程无穷无尽地重复下去。每次所得到的这些区间的端点,就是当前这些位所能表示的数。也就是说,当前精度下,就之能表示到这个精度了。虽然可以把这个精度无穷无尽地缩小,以至于分辨率越来越高,但是他终究是每次对半分,总有一些是表达不了的。所以也就是说,无论是十进制,还是二进制,他们都只能表达数轴上的某些有规律的点。总有一些点是没法表示的。所以,他只能无穷地接近某个数,但是却不能用某个时候的有限的精度来表示这个数。所以,有可能出现无穷尽地转化而没法结束的情况。就好比1/3=0.33333......,无穷无尽。

怎么样?说到这里,应该很好理解了吧。

如果这个理解透彻了,那么,八进制,十六进制都很简单了吧。

刚好,8是2的三次方,所以,八进制与二进制的互相转化,十六进制与二进制的互相转化,都很简单。二进制转化为八进制,很容易,二进制每相邻三位作为一个整体,转化成八进制的一位:

二进制的110  010对应八进制的:6 2,其余的一些问题,我就不费口舌了,你得学会自己动脑筋想问题。最好是自己能给自己提出问题。提出问题,说明你在独立自主地思考问题。说明你的思维已经到了一定的深度。这个很重要。没有一定的洞察力,提出来的问题也不会有什么技术含量,只有有了洞察力,你才会提出有质量的问题,而不断地积极主动地思考问题,提出问题,又能促进你的思维变得有洞察力。所以,一定要积极主动,要学会问问题。