【问题标题】:python adding binary numberpython添加二进制数
【发布时间】:2014-09-26 04:16:58
【问题描述】:

在 Python 3 中处理二进制数时出现意外输出。

我们可以通过内置的 bin() 函数轻松地将任何整数转换为二进制。例如:

>>>bin(4243125)

这是我尝试添加 2 个二进制函数时的问题:

>>>bin(x)+bin(y)

输出是两个二进制数的串联,而不是二进制数的加法。二进制函数的输出变成了字符串。

二进制函数中的加法可以正常工作:

>>>bin(x+y)

并且尝试在没有 bin() 的情况下添加两个二进制数也是可行的:

>>>0b100+0b10111

将 bin() 输出设置为字符串的原因/目的是什么?

【问题讨论】:

  • 两个原因:1. 几乎所有 Python 数字字面量都以 10 为底,所以 101101,而不是 5,和 2.(例外,仅在 Python 2.x 中)前导 0 表示八进制,所以 0101 == 65。因此,为避免混淆,bin 返回一个以0b 为前缀的字符串。
  • Python 中的整数已经以二进制形式存储(嗯,从技术上讲,它们存储在 base 215 或 base 230 中,但是足够近)。内部二进制转换为十进制字符串以供显示(例如,strrepr)。你想达到什么目的?
  • 那为什么它能够计算出'str'类型的二进制数呢?像 0b101+0b1 但不是 bin()+bin()。
  • 你想错了:抽象地说,整数只是一个数字——它没有个底。没有“十进制整数”或“二进制整数”之类的东西。整数有十进制和二进制表示,它们是字符串,而不是数字。同样,您想在这里实现什么目标?你想解决的真正问题是什么?
  • 以某种方式返回字符串类型的“数字”,这不是中断进一步的过程吗?

标签: python python-3.x binary


【解决方案1】:

binhex 一样,将十进制转换为表示该基数的字符串文字。

如果您想将两个数字相加,只需这样做:

x = 10
y = 2
x + y

如果您想将二进制字符串作为输入并将它们加在一起,则将它们从字符串文字转换回int base 2,如下所示:

x = bin(10)
y = bin(2)
int(x, 2) + int(y, 2)

如果您要进行按位运算,请查看 Python 位运算符:

https://wiki.python.org/moin/BitwiseOperators

【讨论】:

    猜你喜欢
    • 2012-01-22
    • 1970-01-01
    • 2017-03-14
    • 2022-01-04
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    相关资源
    最近更新 更多