1. 概述
进制转换是计算机中非常常见的操作,其中最常见的是二进制、十进制、八进制和十六进制的转换。Python提供了多种方法可以完成进制转换,本文将介绍Python的进制转换函数、位运算符、以及常见的进制转换实例。
2. 进制转换函数
Python内置了两个方法,可以用于不同进制之间的转换。
2.1 bin()函数
bin()函数用于将一个整数转换成二进制字符串,其语法为:
bin(x)
其中,x是需要转换为二进制的整数。
下面是一个例子,将数字10转换为二进制字符串:
x = 10
binary = bin(x)
print(binary)
结果:
0b1010
可以看到,bin()函数返回有一个前缀"0b"的二进制字符串。
2.2 int()函数
int()函数可以将不同进制下的字符串转换为十进制整数,其语法为:
int(x, base)
其中,x是需要转换为十进制的字符串,base是原数的进制数。
下面是一个例子,将十六进制数"0x1b"转换为十进制整数:
x = "0x1b"
decimal = int(x, 16)
print(decimal)
结果:
27
x是一个十六进制的字符串,并且指定原数的进制数是16。int()函数返回了相应的十进制整数27。
3. 位运算符
Python还有一些用于进行二进制运算的位运算符。下面列举了一些常见的位运算符:
运算符 | 描述 | 示例 | 结果 |
---|---|---|---|
& | 按位与。两位都是1则为1,否则为0。 | 0b1010 & 0b1100 | 0b1000 |
| | 按位或。两位都是0则为0,否则为1。 | 0b1010 | 0b1100 | 0b1110 |
^ | 按位异或。两位相同则为0,不同则为1。 | 0b1010 ^ 0b1100 | 0b0110 |
~ | 按位取反。0变成1,1变成0。 | ~0b1010 | 0b0101 |
<< | 左移。把一个数的所有位都向左移若干位,高位移出(舍弃),低位补0。 | 0b1010 << 2 | 0b101000 |
>> | 右移。把一个数的所有位都向右移若干位,低位移出(舍弃),高位补0或1,取决于原数是正数还是负数。 | 0b1010 >> 2 | 0b0010 |
注意:二进制数的位数可能会超出两个字节,使用位运算符运算后,结果也是超出两个字节的。
4. 进制转换实例
4.1 二进制转十进制
下面是一个将二进制数转换为十进制的例子:
binary = "1010"
decimal = 0
n = len(binary)
for i in range(n):
decimal += int(binary[i]) * 2 ** (n-i-1)
print(decimal)
结果:
10
以上代码将二进制字符串"1010"转换为十进制整数,并打印出结果。
4.2 十进制转二进制
下面是一个将十进制数转换为二进制的例子:
decimal = 10
binary = ""
while decimal != 0:
remainder = decimal % 2
binary = str(remainder) + binary
decimal //= 2
print(binary)
结果:
1010
该代码将十进制整数10转换为二进制字符串"1010"。
4.3 八进制转十进制
下面是一个将八进制数转换为十进制的例子:
octal = "34"
decimal = 0
n = len(octal)
for i in range(n):
decimal += int(octal[i]) * 8 ** (n-i-1)
print(decimal)
结果:
28
以上代码将八进制字符串"34"转换为十进制整数28。
4.4 十进制转八进制
下面是一个将十进制数转换为八进制的例子:
decimal = 28
octal = ""
while decimal != 0:
remainder = decimal % 8
octal = str(remainder) + octal
decimal //= 8
print(octal)
结果:
34
该代码将十进制整数28转换为八进制字符串"34"。
4.5 十六进制转十进制
下面是一个将十六进制数转换为十进制的例子:
hexadecimal = "1b"
decimal = int(hexadecimal, 16)
print(decimal)
结果:
27
以上代码将十六进制字符串"1b"转换为十进制整数27。
4.6 十进制转十六进制
下面是一个将十进制数转换为十六进制的例子:
decimal = 27
hexadecimal = hex(decimal)
print(hexadecimal)
结果:
0x1b
该代码将十进制整数27转换为十六进制字符串"1b"。
5. 结论
Python提供了许多内置方法,可以轻松地进行不同进制之间的转换,同时Python的位运算符也让我们在进行位运算时更加高效。