十进制、八进制、十六进制和二进制相互换算教案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

C++初步——二进制、八进制、十六进制和十进制换算(江苏省黄埭中学王荣生)【板书】十进制12345.678=1×104+2×103+3×102+4×101+5×100+6×10-1+7×10-2+8×10-310称为十进制的基数,由0-9共10个字符组成。104、103、102、101、100、10-1、10-2、10-3是各位数字的权。除了十进制外常用的还有八进制、十六进制、二进制等【板书】一、八进制、十六进制和二进制八进制与十进制相对应,八进制的基数为8,有0-7共8个数字组成。例如:八进制:3216.54=3×83+2×82+1×81+6×80+5×8-1+4×8-2当看到3216.54怎么知道是八进制还是十进制的数呢?为了以示区别,C/C++语言中在八进制数前面加个“0”(数字零)。比如:#includeiostreamusingnamespacestd;intmain(){intn;n=012;coutn;//一般以十进制数输出return0;}运行结果:10十六进制前面加0x,如:0x5689十六进制十六进制基数是16,有0-9,a-f共16个字符组成a-10,b-11,c-12,d-13,e-14,f-15例如:0xe54a=e×163+5×162+4×161+a×160二进制二进制基数为2,有0,1两个字符组成。例如:10110110=1×27+0×26+1×25+1×24+0×23+1×22+1×21+0×20进制基数字符换算成十进制十进制100-912345.678=1×104+2×103+3×102+4×101+5×100+6×10-1+7×10-2+8×10-3八进制80-703216.54=3×83+2×82+1×81+6×80+5×8-1+4×8-2十六进制160-9、a-f0xe54a=e×163+5×162+4×161+a×160二进制20,110110110=1×27+0×26+1×25+1×24+0×23+1×22+1×21+0×20思考:五进制、7进制是怎样的?任意进制呢?请将上面例子的值算出来:12345.678=1×104+2×103+3×102+4×101+5×100+6×10-1+7×10-2+8×10-3=10000+2000+300+40+5+0.6+0.07+0.008=12345.67803216.54=3×83+2×82+1×81+6×80+5×8-1+4×8-20xe54a=e×163+5×162+4×161+a×160=14×4096+5×256+64+10=57344+1280+74=5869810110110=1×27+0×26+1×25+1×24+0×23+1×22+1×21+0×20=1×128+1×32+1×16+4+2=160+22=182以上计算所得结果就是该数的十进制数因此,上述计算方法也是二进制、八进制、十六进制转换成十进制的方法。相反,十进制如何换算成二进制、八进制、十六进制呢?【板书】二、十进制——二进制、八进制、十六进制方法:整数部分:除基数取余法,直至商为0十进制——二进制例:33转换为二进制33=100011B十进制——八进制例:433转换为八进制433=0661十进制——十六进制例:234转换为二进制234=0xea也可写为:234=0xEA(十六进制大小写不分)2(基数)35余数权2171×20281×21240×22220×23210×2401×258(基数)433余数权8541×20866×2106×2216(基数)234余数权161410×160014×161小数部分:乘基数取整,直至小数为0十进制——二进制例:0.8125取整权0.8125=0.1101B0.8125×2=1.6251×2-10.625×2=1.251×2-20.25×2=0.50×2-30.5×2=1.01×2-4十进制——八进制例:0.625取整权0.625=00.50.625×8=54×8-1十进制——十六进制例:0.8125取整权0.8125=0x0.d0.8125×16=131×16-1前面讲了十进制与二进制、八进制、十六进制相互换算的方法。计算机是用二进制存储数据的,有时候使用二进制可以更直观地解决问题。但二进制数太长了。比如int类型占用4个字节,32位。比如100用int类型的二进制数表达将是:000000000000000001100100面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++没有提供在代码直接写二进制数的方法。用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。为什么偏偏是十六或八进制,而不其它的,诸如九或二十进制呢?2、8、16,分别是2的1次方,3次方,4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数,但保持了二进制数的表达特点。二进制与八进制、十六进制怎么换算呢?三、二进制与八进制、十六进制相互换算观察并计算一下:3位二进制能表达哪些数值:000——0,001——1,010——2,011——3,100——4,101——5,110——6,111——7共8个数值,正好是八进制的8个数。4位二进制呢,能表达哪些数值?0000——0,0001——1,0010——2,0011——3,0100——4,0101——5,0110——6,0111——7,1000——8,1001——9,1010——10,1011——11,1100——12,1101——13,1110——14,1111——15共16个数值,正好是十六进制的16个值。有了这个规律二进制到八进制、十六进制就简单了!【板书】二进制——八进制从低位到高位每3位一组,直接用八进制表示就可以了:1011010011——1,011,010,011八进制:1323所有:1011010011=01323【板书】二进制——十六进制从低位到高位每4位一组,直接用十六进制表示就可以了:1011010011——10,1101,0011十六进制:2d3所以:1011010011=0x2d3反之,【板书】八进制——二进制将八进制每位数字转换成3位二进制即可,例如:0654——110,101,100所以:0654=110101100【板书】十六进制——二进制将十六进制每位数字转换成4位二进制即可,例如:0x6B4——0110,1010,0100所以:0x6B4=011010100100综上所述,只须熟练掌握0000——0,0001——1,0010——2,0011——3,0100——4,0101——5,0110——6,0111——7,1000——8,1001——9,1010——A,1011——B,1100——C,1101——D,1110——E,1111——F就可以了。但这个转换每次计算还是感觉有些难,一眼看不不出来。下面来看看怎么计算更简单,使我们一眼就能看出它的值。首先我们最多只需看4位二进制比如:1011权:842所以很容易知道1011=8+2+1同理:1101=8+4+1=130110=4+2=610——A11——B12——C13——D14——E15——F这里只须记住10为A,然后各个位1——B2——C3——D4——E5——F这样二进制与十六进制、八进制的转换就很方便了。练习:1、将下列二进制数转换成八进制和十六进制10100100110100100011111110111010001011011012、将下列十六进制数转换成二进制0x7b3fd0xef3b0x1cefd10xacfde3、将下列八进制转换成二进制06733023537054210十进制有+-×÷基本运算,那么二进制、十六进制有这些运算吗?答案是肯定的【板书】四、二进制、十六进制基本运算二进制的运算:加法规则:乘法规则:0+0=00×0=00+1=10×1=01+0=11×0=01+1=0(进位1)1×1=1例:101110111011——11+1101—101×1101×1311000110101133101111(二进制除法不予讨论)101114310001111——143十六进制的运算(乘法除法过于复杂不予讨论)0x15c30x3d25+0x3d25-0x15c30x52e80x2762

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功