在 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
我给出的所有二进制整数总是可以被 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