《关于二进制-精品文档资料整理.ppt》由会员分享,可在线阅读,更多相关《关于二进制-精品文档资料整理.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、关于二进制关于二进制V0.9 BETA BY 06B1V0.9 BETA BY 06B1V0.9 BETA BY 06B1V0.9 BETA BY 06B1王崇生王崇生王崇生王崇生写在前面写在前面一直很喜欢曼昆的经济学原理,也许是读教材已经读厌了,本以为没有什么教材能让我用心去读了,直到曼昆的经济学原理出现。于是,尝试着,去像他那样,化深奥为浅显,便有了这份PPT。例牌一语:错误难免,万望见谅。如果你发现了其中的错误又或者有什么地方看不明白的,可以找我问问,我的Q号是495282781,不过加我最好说明你是谁,不然我会以为是网络骗客而置之不理。一、何为一、何为“二进制二进制”首先,我们先来讲一
2、下何为“十进制”。我们日常所使用的数制是“十进制”,这是因为我们的手指只有十根,因此我们的日常所用数制是“逢十进一”。试想,我们从“零”开始数,只能数到“九”,我们并没有一个符号来表示“十”,我们用的是,在“十”位上记为1,在“个”位上记为0,就是10。也就是说,我们数到9之后,就是“进”了一位,这就是“逢十进一”当计算机发明以后,人们发现,很难做出一种电子元件,能拥有10种稳定状态。电子元件不会像人一样,天生就有十根手指。但是,如果做出只拥有两种状态(如通电-断电,N极-S极,正电-负电)的电子元件,则是非常简便的事。所以,在计算机内部使用的是“逢二进一”的二进制。下面,我们通过一个简明的例
3、子,借助“十进制”,来更清晰地了解“二进制”。右图是大家经常见到的一种儿童启蒙玩具计数盘。当我们要表示1这个数字,我们就会把个位(也就是右边数起第一根柱,下同)上的1颗珠子拨下来,如图。那么,我们要表示9呢,自然是把个位上的9个珠子都拨下来,那我们要表示10呢?百 十 个1很明显,个位上只有9颗珠子,不可能再拨了。我们就会把个位的都拨回去,然后把十位的一颗珠子拨下来,就像右图那样。这,就是“逢十进一”,当我们遇上“十”,就会“进”到第二根柱子。那好,我们再来考虑,123这个数字又会怎么表示呢?百 十 个01就像右图那样,百位拨1颗,十位拨2颗,个位拨3颗,对吧。现在让我们换一换角色,当你看到如
4、右图的计数盘时,你心里是不是就马上知道它表示123这个数字呢?答案是肯定的,因为我们心里清楚。百位的1颗珠子代表100,十位的代表10,这个数字是1*100+2*10+3=123百 十 个321现在,我们来考虑一下,在这个每根柱子只有一颗珠子的计数盘上的“百、十、个”,各自代表什么呢?显然每根柱子都可以表示十十种情况(不拨,拨1颗,拨2颗,拨9颗),因此,千位其实是10的3次方,百位是10的2次方,十位是10的1次方,个位是10的0次方,因此,这个数字同样是1*102+2*101+3*100=123百 十 个321那么现在我们来考虑,如果计数盘上的每根柱子只有一颗珠子,那情况又会怎样呢(为了说
5、明的方便,我们保留柱子上面的“百、十、个”)当然,要表示1这个数字,我们同样是把个位上的1颗珠子拨下来。那么,如果要表示2呢?百 十 个1当个位上还有9颗珠子时,我们很自然会再往下拨一颗,但是,现在个位上只有1颗,已经不可能再往下拨了,就像我们拨到9,不可能再拨第十颗那样。现在的情况和我们要表示“十”的时候非常类似。我们很自然地会模仿之前那样,把个位的珠子往上拨,并拨下十位上的珠子。如图那样。百 十 个01这就是所谓的“逢二进一”,当我们遇上“二”时,就会“进”到下一根柱子。那么,右图所表示的是数字3,我们都可以理解吧。为了更好地了解,让我们再想一想,如何表达4?百 十 个11对了,就是像右上
6、图那样把前两颗珠子拨上去,把百位的那颗珠子拨下来。那么,我们再来看看,右下图所表示的,又是哪个数字呢?百 十 个001101对了,是数字5。现在,我们来考虑一下,在这个每根柱子只有一颗珠子的计数盘上的“百、十、个”,又各自代表什么呢?回想起九颗珠子的时候,每根柱子都可以表示十十种情况。因此百位是10的2次方,十位是10的1次方,个位是10的0次方。那么,现在每根可以表示多少种情况呢?是二二种,因此百位是2的2次方,十位是2的1次方,个位是2的0次方。那么,右图的数字是多少呢?1*22+0*21+1*20=4+0+1=5,没错,是5,我们之前就知道的。百 十 个10122 21 20现在,我们应
7、该就不难理解,在“二进制”下,10其实是2,11其实是3,100是4,101是5,那么100101呢?1*25+0*24+0*23+1*22+0*21+1*20=1*32+0*16+0*8+1*4+0*2+1*1=37 100101其实是37。其实,我们在理解何为“二进制”之时,已经无意学会了“二进制”转“十进制”的方法了。以此类推,“八进制”、“十六进制”转“十进制”时,只要把上面的“2”换成“8”、“16”就行了,如十六进制数3B(B表示11)二、二、“十进制十进制”转转“二进制二进制”由于方法书上有,在P84-P85,所以我就不罗唆了。至于原理嘛,因为对考试对实际应用的作用都不大,所以我
8、就不叙述了,有兴趣的可以研究一下“二进制”转“十进制”的逆运算,就会明白的了。三、其他进制三、其他进制依照“二进制”转“十进制”的方法类推,“八进制”、“十六进制”转“十进制”时,只要把“2”换成“8”、“16”就行了,如十六进制数43B(B表示11)4*162+3*161+11*160=4*256+3*16+11=1083至于“二进制”、“八进制”、“十六进制”的相互转换,就像书本上P85说的那样,“一分三”、“一分四”。至于“十进制”转“八进制”、“十六进制”,虽然可以使用书上所说的“取余法”来做,但是,依我个人经验,除了“除2取余”比较方便(因为除2计算简便,且余数非1则0),其他的既费
9、时又容易出错。因此,我一般是先转成“二进制”,再转成“八进制”或“十六进制”。为此,在做题时先写出下表是有必要的(不必去背,一路写下去,很顺手的)。1 12 23 34 45 56 67 78 89 9A AB BC CD DE EF F1 1101011111001001011011101101111111000100010011001101010101011101111001100110111011110111011111111就举书上的例子,十进制数219转换成十六进制,经运算,十进制数219转二进制的结果是11011011,接下去,将这个数每四位分一部分,1101 1011,参照上表,
10、1101是D,1011是B,所以十进制数219转换成十六进制DB1 12 23 34 45 56 67 78 89 9A AB BC CD DE EF F1 1101011111001001011011101101111111000100010011001101010101011101111001100110111011110111011111111有一类型的考题是这样的,出一个十进制数,一个二进制数,一个八进制数,一个十六进制数,让我们选出最大的一个。我一般是都把它们转成二进制来比较的,当然,方法不限。其实,WINDOWS里的计算器就有“二、八、十、十六”四种进制的相互转换。开始-附件-计算
11、器,再点“查看”,选“科学型”(“标准型”就是我们日常生活中的功能单一的计算器,不依照“先乘除后加减”法则的那种;而“科学型”则是我们中学用的那种)。默认是十进制,输入数字后,选择要转换的进制就可以了。不过计算器不支持小数部分的转换,换句话说,遇上小数,我们只能自己笔算。四、原码、反码和补码四、原码、反码和补码原原码,符号位0表示正1表示负,顾名思义,就是原本的二进制码。反反码,符号位0表示正1表示负,正数的反码等于原码,负数的反码等于原码除符号位外按位取反,即0变1,1变0。补码,符号位0表示正1表示负,正数的补码等于原码,负数的补码等于其反码加1。下面,我们通过例子来说明三者之间的运算。我
12、们先来考察+42这个正数,转换成二进制后,为101010,假设机器字长为8,则其原码为00101010,其中,左边第一个数是符号位,0表示正数,1表示负数。紧记一条法则,正数的原码、反码、补码是不变的,所以其反码和补码均是00101010。接下来,我们考察-42这个负数,从之前的计算中我们得知,42的二进制数是101010,假设机器字长为8,则其原码为10101010。反码是除符号位不变,其他则0变1,1变0,所以-43的反码是11010101。接下来,补码是反码加1,为11010110 11010101+00000001=11010110 现在我们从表格进行二者的对比正数的原码、反码、补码是
13、不变的负数的反码是原码除符号位外取反,补码是反码加1+42-42原码 00101010 10101010反码 00101010 11010101补码 00101010 11010110还有一个表示数值范围的问题,假设机器字长为8位,其中左边第一位是符号位,表示数值的有7位数,由排列组合知识,我们知道,7位数,每位都有2种变化,其组合有27=128,对应0-127共128个数,再加上符号,其数值范围是+127至-127。由于反码除符号外其余取反,所以其数值范围同样是+127至-127。至于补码,其数值范围则是+127至-128。这是为什么呢?让我们先来看原码。除了符号位外,其余7位表示0至127
14、,那么当符号位是0(正),其数值范围是0至127,当符号位是1(负),其数值范围则是-0至-127。+0与-0是不同的,+0的原码是00000000,-0的原码是10000000。由于正数的反、补码不变,所以补码的正数范围是0至127,但是,负数的补码是反码加1,那么除了符号位外,其余7位表示1至128。加上前面的负号,其负数范围是-1至-128,综上,补码的范围是+127至-128。如果要问为什么补码的数值范围会比原码、反码多1?那是因为,在原码、反码中,0的表示方式有两种,而在补码中只有一种。写在后面写在后面思索良久,如果我向全院同学公布自己所写这些东西,会不会让别人觉得我无事找事,在找机会炫耀自己是全院唯一一个通过计基免修的人。其实,我知道,在我们院还有许多比我水平还要高的高手,只是他(她)们希望有多点时间准备,多拿些分数,才没有参加免修试。所以,那所谓的“全院唯一一个通过计基免修”实在没什么了不起的。但是,如果这些东西能够帮到更多的同学取得更好的成绩,我又何乐而不为呢?不知不觉间,关于“二进制”部分已经完成了,下一步准备写“编程”。希望能帮助更多的人,取得更好的成绩。王崇生于2007年5月12日