c++进制转换(整数)

c++中的进制转换是学c++的基础,但对于一个初学者来说,进制转换是比较烦人的东西。由于本人也被进制转换祸害过,所以本人在这里对进制转换(2,8,10,16)进行一个整理。

整数部分

这里整理的是整数部分的进制转换。

10进制转2、8、16进制:

这里我们可以使用一个短除法:

先举一个例子,50,下面是用短除法来解决:

2|50      0

        2|25      1

                2|12      0

                        2|6       0

                                2|3       1

                                        2|1       1

                                                0

最后从下往上将余数写出来:

50(10)=110010(2)

至于十进制转8、16进制都是一样的,只不过16进制有些要用字母(见下表):

十进制101112131415
十六进制ABCDEF

2、8、16进制转10进制:

这里我也不多讲了,直接解题。

例子:二进制110010转为十进制:

先来看一个表:

二进制数位数对应的次方相应的数值
1

2的0次方

1
22的1次方2
32的2次方4
42的3次方8
52的4次方16
62的5次方32
72的6次方64
82的7次方128
92的8次方256
102的9次方512
112的10次方1024

对着这个表,我们就可以开始了,看好我的操作:

0*1+1*2+0*4+0*8+1*16+1*32=50

这就是求的方法。

这个算式也可以简化成这样:

1*2+1*16+1*32=50

但无论如何,我们还是求出来了。

至于8、16进制转10进制,其实也是差不多的,只是把2的n次方变成8或16的n次方。

2进制转8、16进制:

这个其实也不难,只要记住两个表并掌握方法。先来两个表吧:

二进制数八进制数
0000
0011
0102
0113
1004
1015
1106
1117
二进制数十六进制数
00000
00011
00102
00113
01004
01015
01106
01117
10008
10019
1010A
1011B
1100C
1101D
1110E
1111F

看着表格,我们就可以做了。先来尝试一题2进制转8进制吧:

110010010(2)=?(8)

首先,我们要对2进制数进行从后往前划分,三数一划

110|010|010

//这个数刚好是9位,如果位数不是3的倍数,我们要在前面补零,如:

//11110000010变成011|110|000|010

划完后,我们按表划分:

110|010|010

  6     2     2

得出答案:110010010(2)=622(8)

2进制转16进制就不多说了,就是3位划分变为4位划分。 

至于表格有没有什么规律,你就自己去寻找吧!!!!![坏笑][坏笑] 

2进制转8、16进制:

这个我也不多说了,根据表来还原就好了。 

​​​​​​​好了,整数部分的进制转换就到这里了,小数部分的见下篇文章。 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值