将计算的十进制数转换为8位二进制数

时间:2017-12-06 00:24:47

标签: python python-3.6

我目前正在制作一个与字节加法相关的python程序,它会提示用户输入2个整数,将它们加在一起,如果它在一个字节的实际大小范围内(0到255),则显示该数字并以8位二进制形式给出相应的值,例如,计算等于1,显示python声明为正确的二进制数。

这是我正在做的任务〜

“程序必须检查输入数据是否允许数据类型和数据值限制(整数值不得超过字节编码整数的实际大小,即基数2或分钟中的最小值00000000和最大值11111111基数10中的0和最大255表示正整数“以二进制和十进制格式输入,转换为二进制

def add():
    Num1 = int(input("Input the first number between 0 and 255, the calculated answer must not be above 255: "))
    Num2 = int(input("Input the second number between 0 and 255, the calculated answer must not be above 255: "))

    calculatedanswer = Num1+Num2

    if calculatedanswer >= 0 and calculatedanswer <=255:
        print("The answer in decimal is" ,calculatedanswer,)

        **bin(calculatedanswer)**

    elif calculatedanswer < 0 and calculatedanswer >255:
        print("Please ensure the added numbers are above 0 and below 255")
        add()

到目前为止,这是我的代码,我可以毫不费力地显示标准的十进制数,但我真的无法让bin(calculatedanswer)显示它的二进制等价物。我尝试使用我在YouTube上找到的这种方法。

我认为我的主要问题是我对“bin”如何在python上工作缺乏了解,因为这是我第一次使用它。

我把星号放在了我遇到麻烦的地方。

2 个答案:

答案 0 :(得分:1)

您必须打印值:

>>> print(bin(160))  # This version gives the 0b prefix for binary numbers.
0b10100000
>>> print(format(160,'08b'))  # This specifies leading 0, 8 digits, binary.
10100000
>>> print('{:08b}'.format(160)) # Another way to format.
10100000
>>> print(f'{160:08b}')  # Python 3.6+ new f-string format.
10100000

答案 1 :(得分:1)

打印它的一个选项是切掉结果的0b部分,我假设当你说你遇到bin函数问题时你的意思。

试试这个:

print(bin(calculatedanswer)[2:]))