您的当前位置:首页正文

python0o1010_Python每日打卡—进制那些事儿

2024-11-12 来源:个人技术集锦

python每日打卡 — 进制基础

应邀写一篇关于进制的文章,首先我们先来了解一下进制,什么是进制呢?

答:进制也就是进位计数制,是人为定义的带进位的计数方法

所以说,进制是一种计数方法,在我们的日常生活中,我们所用的数字0.1.2.3.4…9.计数,这是一种进制,称十进制,是因为我们常用的这种计数方法都是由 0—9 这十个数字所构成的,逢十进一,所以,几进制就是逢几进一。

一、 进制的表示

在python中想要使用二进制,可以在前面加上0b(前缀,进制标志),格式如下:

>>>print(0b10)

2

你会发现,它返回的是2,是一个十进制的数(注意是数,int类型),所以在编python的时候,创作者以十进制为主体,返回人们所熟悉的数字,也是能体现python是多么的亲民。

注意:计算机所有数据在底层都是以二进制的补码进行存储的,而人们看到的十进制数字是原码转换来的,所以计算机本身是看不懂十进制的数的

当然,不是说加上0b就可以将2进制转化为十进制了,它是指0b后面的数字是以二进制形式计数的,所以0b后面的数字只有0和1,但如果你强行输入别的数呢,咱们可以试一试:

>>>print(0b9)

SyntaxError: invalid token

计算机就会报错

进制可不止二进制十进制,还有八进制和十六进制,八进制的前缀是0o,十六进制的前缀是0x,它们的用法是相同的都是在前缀后加上各自的进制数,返回一个十进制的数,如下:

>>>print(0o10) #8进制下的10

8

>>>print(0x10) #16进制下的10

16

十进制就不需要前缀啦,想输出什么就输什么

但是我们日常工作时,一般不会已知其他进制求十进制的,一般的是由十进制求其他进制的,具体操作方法开始演示:

二、进制的转化

如果给你一个十进制的数,如何转换为其他进制呢,python中有内置函数可以解决这一问题:

>>>print(bin(10)) #十进制转化为二进制

>>>print('{:b}'.format(10))

0b1010

>>>print(oct(10)) #十进制转化为八进制

>>>print('{:o}'.format(10))

0o12

>>>print(hex(10)) #十进制转化为十六进制

>>>print('{:x}'.format(10))

0xa

注意: 这三个函数所返回的对应的进制数都是以 str 格式存储的

>>>print(type(bin(10)))

有些题目不会只让你输出对应的数的,它会很刁难你,让你输出固定长度的其他进制的数怎么办,format 格式化函数可以解决这个问题:

>>>print('{:06b}'.format(10)) #:b表示转化为二进制,06表示显示八位

001010 #高位用0补齐

>>>print('{:08o}'.format(10))

00000012

>>>print('{:08x}'.format(10))

0000000a

相反的如果给你的是其他进制的数,那么How to转化为十进制的数,这时,可以用到两个函数:int( ) or eval( ) 具体操作如下:

>>>print(int('0b1010',2))

>>>print(int('1010',2))

>>>print(eval('0b1010',2))

10

10

10

>>>print(int('0o12',8))

>>>print(int('12',8))

>>>print(eval('0o12',8)

10

10

10

>>>print(int('0xa',16))

>>>print(int('a',16))

>>>print(eval('0xa',16))

10

10

10

看程序分析,int()和 eval()很相似,他们均须输入其他进制的数和对应的进制数,但是有差别,eval 的 0b,0o,0x 是不可以省略掉的,但是如果使用int()的话,进制标志是可以省略的。

关于进制,咱们今天就讲些基础内容,如果后期需要的话,会更深层次的解析进制问题。

UPC. 故里

发布了19 篇原创文章 · 获赞 6 · 访问量 341

私信

关注

标签:10,进制,format,Python,int,print,打卡,十进制

来源: https:///qq_45770364/article/details/104512188

显示全文