Как прочитать конкретную позицию бита с плавающей точкой? - PullRequest
0 голосов
/ 05 октября 2019

Я хочу прочитать конкретную позицию с плавающей точкой, например, x [16: 3] (с 4-го по 17-й бит). Случай с языком C очень прост:

bits = x & ((2**L - 1) << M);

Случай с Python, '&' операции с маской недопустимы для чисел с плавающей запятой. Тогда как это сделать на Питоне?

1 Ответ

1 голос
/ 08 октября 2019

Я не уверен, правильно ли я вас понимаю, но это было бы моим решением:

import struct

def float_to_bin(num):
    return format(struct.unpack('!I', struct.pack('!f', num))[0], '032b')

x=16.4637159674589415472835945

string=str(x)
bitx=float_to_bin(x)

part_of_string=string[4:17]
part_of_bitx=bitx[4:17]

Я скопировал функцию float_to_bin из другого места (вероятно, где-то из Stackoverflow), чтобы сделать floatдвоичное число. Эта функция уже делает двоичное число строкой, поэтому вы можете просто использовать обычное индексирование. Если вы хотите прочитать конкретную позицию числа с плавающей запятой, вы можете просто сделать это число строкой и затем использовать индексирование.

Надеюсь, я правильно понял ваш вопрос. Бест, лепакк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...