使用二进制和二进制补码将值从正数切换为负数

问题描述 投票:0回答:1

因此,对于我的大学计算机课程(英国),我们被分配了一项家庭作业任务,将用户的输入更改为其负值(1 到 -1、13 到 -13 等...),但我不知道该怎么做。我从 stackoverflow 上的其他页面上收集了一些代码,但我输出的结果总是在前面包含一个 0,这意味着该值不再是负数。我不确定如何更改此设置,因为当我更改底部的递归代码时,我收到以下错误:

File "<ipython-input-23-300b7347f10c>", line 22
    return(num % 2, end = '')
                    ^
SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?

我对编码还算陌生,在高中时只专注于基础知识,所以我真的不知道如何解决这个问题。

(此外,我们被告知不能使用任何 Python 内置函数来进行二进制和十进制之间的转换)

#Outputting original binary
binary = str(input("Enter a binary number:")) `#asks for the binary number`
RevBinary =binary[::-1] `#Reverses the number for multiplying?`
count = 0 `#sets counter at 0`
denary = 0 `#sets the denary value at 0`


for number in RevBinary:
  denary += 2**count*int(number) `#does 2^count multiplied by whatever the number in RevBinary the for loop is currently at`
  count+=1 `#increases count for next number`

print("The original denary number is: [", denary, "]")

`----THE PROBLEM AREA----`
NewDenary = Denary + 1 

def DecimalToBinary(num):

  if num >= 1:
    DecimalToBinary(num // 2)
  print(num % 2, end = '') `---#Can't edit this line else i get the error message---`
DecimalToBinary(NewDenary)
python binary twos-complement
1个回答
0
投票

在我看来,

return
声明只是一个错误粘贴。如果你想通过递归构建一个字符串,你只需要在字符串之间加一个加号即可。

def decimal_to_binary(num:int):
    if num < 0:
        raise ValueError('negative numbers not supported')
    elif num > 1:
        return decimal_to_binary(num >> 1) + decimal_to_binary(num & 1)
    else:
        return '1' if (num & 1) else '0'

翻转一串 1 和 0 中的位听起来像是一个简单的列表理解和字符串连接,可能还需要一些填充。我不愿意发布听起来像是作业的完整解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.