Разделите произвольные двоичные целые числа на 3 в python - PullRequest
0 голосов
/ 28 мая 2020

Все заданные двоичные целые числа всегда делятся на 3, поэтому значения с плавающей запятой не используются. Возвращаемое значение также должно быть двоичной строкой. Пробовал, но 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

1 Ответ

0 голосов
/ 31 мая 2020

Поскольку ваши числа всегда делятся на 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
...