C语言小题库里有趣的事情
前言
这次随笔比较随便一些,都是看到啥我不懂的经过查询之后觉得有趣便加入了。
进制转换衍生出来的小问题——进制数前缀的含义
相信这是再基础不过的问题了,初学大学的C语言课程和数电课程的时候总会先提到进制以及要求不同进制之间的转换,常见的进制转换的题目会出现2进制,8进制,10进制,16进制等。
这边丢一道题库里刷到的题:
下面四个选项中,等价于十进制数85的是_______。
A. 055 8进制数,=45
B. 0x55 √
C. 0b125 没有这种写法 ,二进制数每位不能超过1 例如ob 10110101
D. 0125 这个也是对的
在这里就出现了三种进制,分别是八进制、十进制和十六进制,其中C选项是错误的写法。
在C语言里,十六进制数需要以0x开头,我不是很懂为什么是0x开头,它有什么含义?经过搜索后得出来比较多的解释是这样的:
0x的x可能是采取了十六进制的单词hexadecimal中的x
而八进制以0开头,也有以下说法:
八进制英文为Octal ,首字母O和数字0相似
二进制则是以0b开头,这道题里C选项就将二进制数字写错了,总所周知二进制只有1和0。0b中的b应该是二进制单词Binary的缩写。常见的十进制就不用前缀了。
在小小的聊了一下进制问题,那么比较重要的进制转换也就是重要的考点了。
常见的十进制转二进制整数部分只需要除二取余,然后倒过来写上;小数部分则需要乘二取整。
二进制转十进制则是按权展开依次相加。八位和十六位转十位也是差不多的原理。至于二位转八位或者十六位转八位可以先转为十进制再进行转换。
小结
只是觉得有趣就顺手写了下来,之后会详细把数制转换的内容丰富一下。

浙公网安备 33010602011771号