二进制、八进制、十进制、十六进制间互转(整数加小数)

举报
秦同学学学 发表于 2022/06/10 20:29:18 2022/06/10
【摘要】 前言 一、进制简要概述 二、常见进制区分方法 三、非十进制转十进制 四、十进制转非十进制(整数加小数) 五、二进制转为八进制、十六进制(整数加小数) 六、八进制、十六进制转为二进制(整数加小数) 前言从现在开始因为某些原因要开始学习C语言,今天老师讲的第一节课居然是进制计算。这个知识点也是好久没有复习了,索性撰写一篇blog帮助大脑回忆并巩固一下。 一、进制简要概述可以用有限的数字符号代表...

前言

从现在开始因为某些原因要开始学习C语言,今天老师讲的第一节课居然是进制计算。这个知识点也是好久没有复习了,索性撰写一篇blog帮助大脑回忆并巩固一下。

一、进制简要概述

image-20220607224243566

可以用有限的数字符号代表所有的数值是进位制/位置计数法记数方式的一大特点,所以也叫做进位记数法/位值计数法

对于任何一种进制—X进制,就表示每一位上的数运算时都是逢X进一位。 十进制是逢十进一,十六进制是逢十六进一,二进制就是逢二进一,以此类推,x进制就是逢x进位。

#概述来自于百度百科

对于任何一个数,我们可以用不同的进位制来表示。比如:十进数57(10),可以用二进制表示为111001(2),也可以用五进制表示为212(5),也可以用八进制表示为71(8)、用十六进制表示为39(16),它们所代表的数值都是一样的。

二、常见进制区分方法

我们一般生活或学习中最长遇到的进制为十进制、二进制、八进制、十六进制,但是这只是常见的进制,并不是代表只有这些进制,还有一些不常见的进制,比如一年12个月,这不就是12进制嘛。一天24小时,不就是24进制嘛,我们这里重点讲述常见进制。

image-20220607230324161

那么问题来了,这莫多进制怎么样区分呢??? 一个数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.将二级进制转为十进制

image-20220609212726410

eg2.将八级进制转为十进制

image-20220609214136733

eg3.将十六级进制转为十进制

image-20220609214146448

写完之后突然看到有非十进制转十进制出现小数,其实和整数是一样的,只不过小数点后面第一位就变成了x^-1^,小数点后第二位变成了x^-2^,以此类推……

eg4.image-20220609214933401

四、十进制转非十进制(整数加小数)

十进制转非十进制,和前面有点不太一样,十进制转非十进制需要整数部分和小数部分分别转换,分别转换完毕后再进行拼接。

整数部分和小数部分分别转换肯定也是有转换技巧的,转换口诀就是 整数部分:转几除几,倒取余小数部分:转几乘几,正取整

eg1.十进制转为二进制(整数与小数)

image-20220609221549060

eg2.十进制转为十六进制(整数与小数)

image-20220609222336446

注:有的规定精确到多少位数,那时无需非余到0为止,到达精度就可以

五、二进制转为八进制、十六进制(整数加小数)

二进制转为八进制、十六进制也就是二进制转为2~n~进制,我们可以将二进制转为十进制,然后再将十进制转为八进制、十六进制,只不过这养有点慢和low。

二进制转为2~n~进制,也有单独的方法,以有整数和小数的二进制数举例,那就是以小数点为界限进行分组,整数部分从右到左,小数部分从左到右,每~n~位数为一组(小数不够n位时需要用0进行填补到够n位,整数不用管不影响),然后将分的每个小组再按照二进制进行计算,最后总结拼接,就可以得出结果。

废话不多说,直接看例子……

eg1.将二进制转为八进制

image-20220609225146285

eg2.将二进制转为十六进制

image-20220609225206517

六、八进制、十六进制转为二进制(整数加小数)

二进制转为2~n~进制2~n~进制转为二进制其实就是一个互逆的过程2~n~进制转为二进制,可以将自身每位数值转换为n位以二进制表示的二进制数并拼接即可。

eg1.将八进制数转为二进制

image-20220609230550582

eg2.将十六进制数转为二进制

image-20220609230601840

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。