二进制列表是指将二进制数字(0和1)作为列表的独立元素来表示。在本文中,我们将探索多种将二进制列表转换为整数的方法。
使用字符串转换配合 int() 方法
这是最高效的方法。我们首先将二进制列表拼接成一个字符串,然后使用内置的 int() 函数并指定基数为 2,这样就可以直接将二进制表示形式转换为对应的整数值。
a = [1, 0, 1, 1]
n = int(‘‘.join(map(str, a)), 2)
print(n)
输出
11
原理解析:
map()函数将二进制列表 ‘a‘ 中的每个元素转换为字符串。- INLINECODE05d39149INLINECODEf63ab41c 方法将这些列表元素组合成一个单一的字符串(例如 "1011")。
int()函数将这个字符串解释为二进制数(基数 2)并将其转换为整数。
让我们继续探索更多方法,看看我们还能如何将二进制列表转换为整数。
目录
- 使用位运算
- 使用数学方法
- 使用 For 循环
使用位运算
位运算 是另一种将二进制列表转换为整数的高效方式。这种方法会迭代处理二进制列表,通过移位和相加来计算整数值。
a = [1, 0, 1, 1]
n = 0
for bit in a:
n = (n << 1) | bit
print(n)
输出
11
原理解析:
- 我们将
number初始化为 0。 - 对于列表中的每一个二进制位,我们使用左移运算符(INLINECODEf6985cd9)将 INLINECODEd957053f 的位向左移动一位,然后使用位或运算符(
|)加上当前的位。 - 这种方法模拟了我们手动计算二进制数的十进制值的过程。
使用数学方法
这种方法涉及使用 2 的幂来计算二进制列表的整数值。虽然它的效率略低于前面的方法,但对于理解二进制转整数的转换过程仍然非常有效。
a = [1, 0, 1, 1]
n = sum(bit * (2 ** i) for i, bit in enumerate(reversed(a)))
print(n)
输出
11
原理解析:
reversed()函数确保我们从最低有效位(最右边)到最高有效位(最左边)处理二进制列表。- 使用
enumerate(),我们计算每一位的位置值。 sum()函数将这些位置值相加以生成最终的整数。
使用 For 循环
这种方法通过遍历二进制列表并利用 2 的幂来手动计算整数值。
a = [1, 0, 1, 1]
n = 0
for i in range(len(a)):
n += a[-(i + 1)] * (2 ** i)
print(n)
输出
11
原理解析:
- 我们将
number初始化为 0。 - 对于每一个索引,我们使用负索引以相反的顺序访问相应的位。
- 将该位乘以其位置值(2 的幂),然后将结果加到
number上。