前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >进制转换

进制转换

作者头像
Java架构师必看
发布2021-05-14 14:56:18
2.6K0
发布2021-05-14 14:56:18
举报
文章被收录于专栏:Java架构师必看

进制转换

强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码

目录

最近一段时间以来,发现在问学生关于进制转换问题的时候,让我大吃一惊,本以为是常识性的东西,却发现大多数的学生并且包括一些专门学习数学专业的同学都不太清楚。现在的很多人都追求时髦,去追求什么新技术,什么人工智能等等,却忽略了一些基础性的东西,所以这里我写一篇博文来总结一下关于进制的转换问题,同时也提醒大家在学习新技术的时候,不要忽略基础性的东西,否则传出去会笑死人的,哈哈哈哈,这里吐槽一下啦,接下来进入到我们的正文。首先我们来了解一下关于进制的一些基本概念:

进制:简单来说,就是一种进位的方式。x进制,表示逢x进1。 二进制:只由0,1组成的数据就是二进制数据 例如:10110110 八进制:把二进制的数据,从右开始,每三位一组合,最左边不够的时候,补0。然后,分别计算出对应的十进制数值,最后,在把每个十进制的数据组合起来,就是一个八进制的数据。将二进制数据10110110转换为八进制数据,如图所示:

在这里插入图片描述
在这里插入图片描述

十六进制:上面表现的形式还不是最简单的,我们还有更简单的。把二进制的数据,从右开始,每四位一组合,最左边不够的时候,补0。然后,分别计算出对应的十进制数值,最后,在把每个十进制的数据组合起来,就是一个十六进制数据。将二进制数据10110110转换为十六进制数据,如图所示:

在这里插入图片描述
在这里插入图片描述

规则:进制越大,表现形式越短。

1. 任意进制到十进制的转换

任意进制到十进制的转换无外乎,二进制转十进制八进制转十进制十六进制转十进制,大家在换算进制的时候,千万不要死记硬背,如果忘记了,可以从10进制转10进制来进行推论,如下所示:

代码语言:javascript
复制
十进制                                   十进制
12345 = 10000 + 2000 + 300 + 40 + 5
	  = 1 * 10^4  + 2 * 10^3 + 3 * 10^2 + 4 * 10^1 + 5 * 10^0
	  = 10000 + 2000 + 300 + 40 + 5
	  = 12345

系数:每一个位上的数据值本身就是系数。 基数:x进制的基数就是x。 :我们针对每一个位上的数据进行编号,从右边,并且是从0开始编号,这个编号就是该位值上数据的权值。 结论:十进制数据 = 系数 * 基数^权次幂相加。

二进制数据转换为十进制数据,如下所示:

代码语言:javascript
复制
十进制数据 = 二进制数据每个位置上的数据值 * 2^权次幂相加
二进制:100			十进制:4
100 = 1 * 2^2 + 0 * 2^1 + 0 * 2^0
    = 4 + 0 + 0
    = 4

八进制数据转换为十进制数据,如下所示:

代码语言:javascript
复制
十进制数据 = 八进制数据每个位置上的数据值 * 8^权次幂相加
八进制:100			十进制:64
100 = 1 * 8^2 + 0 * 8^1 + 0 * 8^0
    = 64 + 0 + 0
    = 64

十六进制数据转换为十进制数据,如下所示:

代码语言:javascript
复制
十进制数据 = 十六进制数据每个位置上的数据值 * 16^权次幂相加
十六进制:100			十进制:256
100 = 1 * 16^2 + 0 * 16^1 + 0 * 16^0
    = 256 + 0 + 0
    = 256

2. 十进制到任意进制的转换

十进制到其他进制:除基取余,直到商为0,余数反转十进制数据20转换为二进制数据10100,如图所示:

在这里插入图片描述
在这里插入图片描述

十进制数据20转换为八进制数据24,如图所示:

在这里插入图片描述
在这里插入图片描述

十进制数据20转换为十六进制数据14,如图所示:

在这里插入图片描述
在这里插入图片描述

3. 快速的进制转换法

8421码,是bcd码的一种。它表达的意思是每一个二进制位上的数据对应一个固定的值,只需要把对应的1位置的数据值给相加,即可得到该二进制对应的十进制的值。如图所示:

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
二进制到十进制的转换:
1010100 =  64 + 16 + 4 = 84
十进制到二进制的转换:
100 = 64 + 32 + 4 = 0b1100100

问题:任意的x进制到y进制的转换,该怎么办呢?步骤如下:

代码语言:javascript
复制
x进制   -->  十进制
十进制  -->  y进制

二进制到八进制,十六进制,方法如下:

代码语言:javascript
复制
A: 二进制到十进制,十进制到八或者十六进制
B: 拆分组合法

这里拿二进制到八进制举例子,二进制到十六进制的练习自己做。如图所示:

在这里插入图片描述
在这里插入图片描述

4. Python中进制转换函数

在Python中整数类型包括十进制整数、八进制整数、十六进制整数和二进制整数。

  1. 十进制整数:十进制整数的表现形式大家都很熟悉。例如,下面的数值都是有效的十进制整数。
代码语言:javascript
复制
num1 = 10000
num2 = 256  # 注意:不能以0作为十进制数的开头(0除外)。
  1. 八进制整数:由0~7组成,进位规则为逢八进一,并且以0o/0O开头的数,如0o123(转换成十进制数为83)、-0o123(转换成十进制数为-83)。注意: 0o/0O只是一个标示符号,真正参与转换的是后面的数据。在Python 3.x中,八进制数,必须以0o/0O开头。但在Python 2.x中,八进制数可以以0开头。
  2. 十六进制整数:由0~9A~F组成,进位规则为逢十六进一,并且以0x/0X开头的数,如0x25(转换成十进制数为37)、0Xb01e(转换成十进制数为45086)。
  3. 二进制整数:由0和1两个数组成,进位规则是逢二进一,并且以0b/0B开头的数,如0b101(转换成十制数后为5)、0b1010(转换成十进制数后为10)。

4.1 bin()函数

bin()函数用于将整数转换为前缀以0b开头的二进制字符串形式,bin()函数的语法格式如下:

代码语言:javascript
复制
bin(x)  # x:要转换的整数
# 返回值: 返回以0b开头的二进制字符串

根据用户输入的十进制数转换为二进制数,代码如下:

代码语言:javascript
复制
number = int(input('输入一个十进制数:'))  # 输入用户需要转换的数字
print(bin(number))  # 输出对应的二进制数

运行结果如图所示:

在这里插入图片描述
在这里插入图片描述

4.2 hex()函数

hex()函数用于将整数转换为以0x开头的十六进制字符串形式。hex()函数的语法格式如下:

代码语言:javascript
复制
hex(x)  # 参数x:要转换的整数
# 返回值: 返回一个以0x开头的十六进制字符串

使用hex()函数将下面的整数转换为十六进制字符串形式,代码如下:

代码语言:javascript
复制
print(hex(2))
print(hex(8))
print(hex(19))
print(hex(-88))
print(hex(250))

运行结果如图所示:

在这里插入图片描述
在这里插入图片描述

4.3 oct()函数

oct()函数用于将整数转换为前缀以0o开头的八进制字符串形式,oct()函数的语法格式如下:

代码语言:javascript
复制
oct(x)  # x:要转换的整数
# 返回值: 返回前缀以0o开头的八进制字符串形式。

使用oct()函数将下面的整数转换为八进制字符串形式,代码如下:

代码语言:javascript
复制
# 输出对应的八进制字符串形式
print(oct(50))
print(oct(45))
print(oct(-33))

运行结果如图所示:

在这里插入图片描述
在这里插入图片描述

4.4 int()函数

int()函数可用来把浮点数转换为整数,或者把字符串按指定进制数转换为整数。int()函数的语法格式如下:

代码语言:javascript
复制
int(x [,base])

参数说明:

x:数字或者字符串;

base:表示进制数,默认值为10,即默认为十进制数,用中括号括起来,意思是可以省略;

返回值:返回整数;int()函数不提供任何参数时,返回的结果为0。如图所示: int() can't convert non-string with explicit base

在这里插入图片描述
在这里插入图片描述

如果int()函数中参数x为浮点数,则只取整数部分。如图所示:

在这里插入图片描述
在这里插入图片描述

int函数还有一个奇葩的地方,通过input输入小数时(如5.20),使用int函数将其转换为整数时出现错误,如图所示:

代码语言:javascript
复制
my_val = input('请输入小数:')
print(type(int(float(my_val))))

运行结果,如图所示:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 1. 任意进制到十进制的转换
  • 2. 十进制到任意进制的转换
  • 3. 快速的进制转换法
  • 4. Python中进制转换函数
    • 4.1 bin()函数
      • 4.2 hex()函数
        • 4.3 oct()函数
          • 4.4 int()函数
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档