Мне нужно удалить конечные нули из двоичных битовых последовательностей.Длина битовой последовательности фиксирована, скажем, 52. т. Е.
0101111.....01100000 (52-bit),
10111010..1010110011 (52-bit),
10111010..1010110100 (52-bit).
От преобразования десятичного числа в нормированную двойную точность значимость составляет 52 бита, и, следовательно, нули заполняются с правой стороны, даже если они значимы именьше 52 бит на первом шаге.Я переворачиваю процесс: то есть я пытаюсь преобразовать нормализованную двойную точность в памяти в десятичное число, следовательно, я должен удалить нули (в конце), которые используются для заполнения 52 битов для значимости.
Не гарантируется, что последовательность в руке обязательно будет иметь 0 в конце (как во втором примере выше).Если это так, все конечные нули должны быть усечены:
f(0101111.....01100000) # 0101111.....011; leading 0 must be kept
f(10111010..1010110011) # 10111010..1010110011; no truncation
f(10111010..1010110100) # 10111010..10101101
К сожалению, количество усеченных нулей в конце отличается.(5 в 1-м примере; 2 в 3-м примере).
Это нормально для меня, если класс ввода и вывода string
:
f("0101111.....01100000") # "0101111.....011"; leading 0 must be kept
f("10111010..1010110011") # "10111010..1010110011"; no truncation
f("10111010..1010110100") # "10111010..10101101"
Любая помощь очень ценится.