在 python 中将任意二进制整数除以 3

Divide arbitrary binary integers by 3 in python

我给出的所有二进制整数总是可以被 3 整除,因此不涉及浮点值。 return 值也必须是二进制字符串 试过了,但是 a 和 h 不同,但它们应该是

>>> a="1111111111111111111111111111111111111111111111111111111111111111111111"
>>> f=int(a,base=2)
>>> print (f)
1180591620717411303423
>>> g = f/3
>>> c=int(g*3)
>>> print(c)
1180591620717411303424
>>> h = bin(c)
>>> print(h)
0b10000000000000000000000000000000000000000000000000000000000000000000000

由于您的数字总是可以被 3 整除,因此最好使用 // 进行整数除法,因为当您对大数使用浮点除法时,结果可能不完全正确。

因此您的代码将类似于:

>>> a="1111111111111111111111111111111111111111111111111111111111111111111111"
>>> f=int(a, base=2)
>>> print(f)
1180591620717411303423
>>> g = f // 3
>>> c = g * 3
>>> print(c)
1180591620717411303423
>>> h = bin(c)
>>> print(h)
0b1111111111111111111111111111111111111111111111111111111111111111111111