gpt4 book ai didi

python - 在不转换基数的情况下以十六进制基数添加数字?

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:07 25 4
gpt4 key购买 nike

我需要编写一个函数来获取两个十六进制数,并计算它们的和,我不允许将它们转换为十进制,代码应该使用循环“手动”计算它.例如,它应该是这样工作的:

 1
1 f 5 (A)
+ 5 a (B)
-------------
= 2 4 f

这是一个输入示例:>>>添加(“a5”,“17”)'公元前'

我已经开始构建我的代码,但我卡住了,我想我会分成三个 if,一个只求和数字,其他求和数字和字母,第三个求和字母,但我没有知道如何从这里继续:

def add_hex(A,B):
lstA = [int(l) for l in str(A)]
lstB = [int(l) for l in str(B)]

if len(A)>len(B):
A=B
B=A
A='0'*(len(B)-len(A))+A
remainder=False
result=''
for i in range(len(B)-1)
if (A[i]>0 and A[i]<10) and (B[i]>0 and B[i]<10):
A[i]+B[i]=result
if A[i]+B[i]>10:
result+='1'

非常感谢任何帮助,我不知道如何开始!

最佳答案

您可以有一个子函数,将两个一位十六进制数相加并返回它们的一位数和和一个进位(0 或 1)。此函数将接受三个输入:两个要相加的数字和一个进位。然后,您可以循环遍历要相加的两个数字的数字,从最低有效位到最高有效位,并对每一对数字应用此函数,同时考虑每个阶段的进位。

那么让我们试试你的例子:

A 51 7 +

我们从最低有效数字 5 和 7 开始,执行 1 位加法。 516 + 716 = 1210。 1210 小于 1610,所以我们的 1 位加法的输出是 1210 = C16> 进位为 0。

现在我们添加 A 和 1(我们的进位是 0,所以我们可以正常添加它们)。 A16 + 116 = 1110。 1110 小于 1610,所以我们的 1 位加法的输出是 1110 = B16> 进位为 0。(如果我们有一个非零进位,我们只需将此值加 1。)

因此,我们的总体结果是:

A 51 7 +-----B C

关于python - 在不转换基数的情况下以十六进制基数添加数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22578661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com