二进制、八进制、十进制、十六进制间互转(整数加小数)
前言
从现在开始因为某些原因要开始学习C语言,今天老师讲的第一节课居然是进制计算。这个知识点也是好久没有复习了,索性撰写一篇blog帮助大脑回忆并巩固一下。
一、进制简要概述
可以用有限的数字符号代表所有的数值是进位制/位置计数法记数方式的一大特点,所以也叫做进位记数法/位值计数法。
对于任何一种进制—X进制,就表示每一位上的数运算时都是逢X进一位。 十进制
是逢十进一,十六进制
是逢十六进一,二进制
就是逢二进一,以此类推,x进制就是逢x进位。
#概述来自于百度百科
对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。
二、常见进制区分方法
我们一般生活或学习中最长遇到的进制为十进制、二进制、八进制、十六进制
,但是这只是常见的进制,并不是代表只有这些进制,还有一些不常见的进制,比如一年12个月,这不就是12进制
嘛。一天24小时,不就是24进制
嘛,我们这里重点讲述常见进制。
那么问题来了,这莫多进制怎么样区分呢??? 一个数100,可以是十进制100,也可以是二进制4等,很不明确,所以才有了以下的两种区分方法
:
第一种方法就是数字下标表示法
,很好理解,这个/串数是几进制,你就把这个/串数用小括号括起来,然后在小括号的右下标处标识对应的进制数字就🆗。
例如(1421)~10~代表十进制,(11001)~2~代表二进制,(672534)~8~代表八进制,(A3CE45)~16~代表十六进制。
第二种方法就是英文后缀字母大写表示法
,这个和刚才数字下标表示法
雷同,只不过下标数字变成了各进制英文首字母,这里要求我们单词可以不会背,但是各进制开头大写首字母代表的是哪进制一定要搞清楚。
二进制 B (binary)
八进制 O (octal)
十进制 D (decimal)
十六进制 H (hexadecimal)注意:没有下角标的数字和大写进制首字母时
缺省代表十进制。
例如(1421)代表十进制,(11001)~B~=11001B代表二进制,(672534)~0~=672534Q代表八进制(不写小括号的话要将O改为Q,以防和0相混),(A3CE45)~H~=A3CE45H代表十六进制。
三、非十进制转十进制
不同进制之间的转换,本质上就是基数之间的转换
,非十进制转十进制的方法都是一致的,那就是将各数的各位按权
进行展开,并且相加求和
就可以。
是不是还是不懂,看几个例子就欧克啦(字有点丑)
eg1.将二级进制转为十进制
eg2.将八级进制转为十进制
eg3.将十六级进制转为十进制
写完之后突然看到有非十进制转十进制出现小数,其实和整数是一样的,只不过小数点后面第一位就变成了x^-1^,小数点后第二位变成了x^-2^,以此类推……
eg4.
四、十进制转非十进制(整数加小数)
十进制转非十进制,和前面有点不太一样,十进制转非十进制需要整数部分和小数部分分别转换
,分别转换完毕后再进行拼接。
整数部分和小数部分分别转换
肯定也是有转换技巧的,转换口诀就是 整数部分:转几除几,倒取余
,小数部分:转几乘几,正取整
。
eg1.十进制转为二进制(整数与小数)
eg2.十进制转为十六进制(整数与小数)
注:有的规定精确到多少位数,那时无需非余到0为止,到达精度就可以
五、二进制转为八进制、十六进制(整数加小数)
二进制转为八进制、十六进制也就是二进制转为2~n~进制
,我们可以将二进制转为十进制,然后再将十进制转为八进制、十六进制,只不过这养有点慢和low。
二进制转为2~n~进制,也有单独的方法,以有整数和小数的二进制数举例,那就是以小数点为界限
进行分组,整数部分从右到左,小数部分从左到右,每~n~位数为一组
(小数不够n位时需要用0进行填补到够n位,整数不用管不影响),然后将分的每个小组再按照二进制进行计算
,最后总结拼接
,就可以得出结果。
废话不多说,直接看例子……
eg1.将二进制转为八进制
eg2.将二进制转为十六进制
六、八进制、十六进制转为二进制(整数加小数)
二进制转为2~n~进制
和2~n~进制
转为二进制其实就是一个互逆的过程
,2~n~进制
转为二进制,可以将自身每位数值转换为n位以二进制表示的二进制数并拼接即可。
eg1.将八进制数转为二进制
eg2.将十六进制数转为二进制
- 点赞
- 收藏
- 关注作者
评论(0)