c语言二进制八进制十进制16进制怎么转换

详细点 本人的理解能力极差

二进制转换成八进制数
(1)二进制数转换成八进制数:对于整数,从低位到高位将二进制数的每三位分为一组,若不够三位时,在高位左面添0,补足三位,然后将每三位二进制数用一位八进制数替换,小数部分从小数点开始,自左向右每三位一组进行转换即可完成。例如:
将二进制数1101001转换成八进制数,则
(001 101 001)2
| | |
( 1 5 1)8
( 1101001)2=(151)8

(2)八进制数转换成二进制数:只要将每位八进制数用三位二进制数替换,即可完成转换,例如,把八进制数(643.503)8,转换成二进制数,则
(6 4 3 . 5 0 3)8
| | | | | |
(110 100 011 . 101 000 011)2
(643.503)8=(110100011.101000011)2
4、二进制与十六进制之间的转换
(1)二进制数转换成十六进制数:由于2的4次方=16,所以依照二进制与八进制的转换方法,将二进制数的每四位用一个十六进制数码来表示,整数部分以小数点为界点从右往左每四位一组转换,小数部分从小数点开始自左向右每四位一组进行转换。
(2)十六进制转换成二进制数
如将十六进制数转换成二进制数,只要将每一位十六进制数用四位相应的二进制数表示,即可完成转换。
例如:将(163.5B)16转换成二进制数,则
( 1 6 3 . 5 B )16
| | | | |
(0001 0110 0011. 0101 1011 )2
(163.5B)16=(101100011.01011011)2
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-07-30
在编程时直接用格式化输出函数,%d表示以十进制输出,%o表示以八进制输出,%x表示以十六进制输出…这样可以实现不同进制之间的转换…
第2个回答  2013-07-30
没有明白,你是要什么。 不过,如果你是为了输出显示,那么,“飘风断云” 给出的答案很全了。 如果是为了自己理解(或者可以自己手动计算),那么就可以按照下面的方法:这里有一个基本原则,3位2进制代表1位8进制,4位2进制代表1位16进制。例如,有一个2进制数: 111100110101将其3位一划分得到: 111 100 110 101 (注意要从低位开始划分)得到其对应的8进制数: 7 4 6 5 (7465) 将其4位一划分得到 1111 0011 0101 (注意要从低位开始划分)得到其对应的16进制数: F 3 5 (F35) 如果是利用程序编写进制转换那么:其他进制转换成十进制可以按照 “位权” 的表示法来进行转换。(例如:ABCDH=10*16^3+11*16^2+12*16^1+13*16^0)十进制转换成其他进制可以使用 除以“位权”取余的办法。(例如,除以2取余法)
第3个回答  2013-07-30
没太看懂问题。这东西不是怎么转换的问题。计算机里只有二进制啊。所谓的八进制和十进制十六进制只不过是人类为了更方便的看而已。进制这种东西你要觉得方便也是可以自己定,比如三进制什么的~
计算机很笨,只认识二进制。电路上应该是高电位和低电位吧。具体我还真不是太清楚怎么叫。
程序里你可以认为都是二进制,十进制纯粹是因为人类习惯。十六进制是为了更方便的看计算机的数字。关键是你怎么看待这个问题了。
比如int = 123;就是10进制,是给程序员看的,计算机理解的是二进制。
int = 0xff;就是十六进制,计算机依然理解为二进制。
int = 0b010010;就是二进制。
int = 017;就是八进制。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网