进制转换

C语言基础之进制之间的转换

每次写博客都是因为遇到了不开心的事情(好想射点什么——LOL),今天被老大问到有符号整型二进制数在内存中怎么样表示,对于我这个半路出家,基础不扎实的菜鸟来说简直是懵逼中的懵逼。。。唉,整理一下吧!

有符号数是针对二进制来讲的,用最高位作为符号位。“+”用0表示,“-”用1表示。其他的数位代表数值。还有好多相关的概念,我也不是很懂(原谅我这个菜鸟吧),所以就没有写出来误导大家。

进制转换开始喽~~~

10进制转换成2进制

例如10进制数83 转换成2进制数:

83/2 商41余1

41/2 商20余1

20/2 商10余0

10/2 商5余0

5/2   商2余1

2/2   商1余0

1/2   商0余1

把余数倒排 就得到2进制数 1010011


10进制转换成8进制

例如10进制数91转换成8进制数:

91/8 商11余3

11/8 商1  余3

1/8   商0  余1

把余数倒排 就得到8进制数 133


10进制转换成16进制

例如10进制数51转换成16进制数:

51/16 商3余3

3/16   商0余3

把余数倒排 就得到16进制数 33


2进制转换成10进制    (下面括号里的表示幂运算,注意下)

例如2进制数10110110转换成10进制数:

观察2进制数,有1的表示有值即:

2(1)+2(2)+2(4)+2(5)+2(7)=2+4+16+32+128=182

所以10进制数是182


2进制转换成8进制

例如2进制数11010101转换成8进制数:

从左往右 3个一组分好 最后填0补位 即:

011 010 101

然后分别运算:

2(0)+2(1)   2(1)    2(0)+2(2)

          3                    2               5

所以转换成8进制数为 325


2进制转换成16进制

例如2进制数101011011转换成16进制数:

从左往右 4个一组分好 最后填0补位 即:

0001 0101  1011

然后分别运算:

2(0)     2(0)+2(2)  2(0)+2(1)+2(3)

   1 5 11(B)

所以转换成16进制数为 15B


8进制转换成2进制

例如8进制数35转换成2进制数:

把8进制数 35 分开来计算 即:

3     5

3/2 商1 余1

1/2 商0 余1


5/2 商2 余1

2/2 商1 余0

1/2 商0 余1

所以转换成2进制数为:11101


16进制转换成2进制

例如16进制数14A转换成2进制数:

将14A分开来计算 即:

1   4   A(10)

1/2 商0 余 1           1


4/2 商2 余 0

2/2 商1 余 0

1/2 商0 余 1           100


10/2 商5余0

5/2 商2 余1

2/2 商1 余0

1/2 商0 余1       1010

所以转换成2进制数为:11001010 是不是不对了?别忘记原来2进制转换成16进制是怎么分的组 有没有填0补位 这个一定要注意!!!

0001 0100 1010

所以正确答案是101001010


记得回头看看8进制转换成2进制 是不是也有这个问题?

还有其他的转换,我习惯就是把他们先转换成2进制 然后再转换成其他进制

我的原创,我的理解,希望大神们多批评指导我这个菜鸟~~~



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值