Просто скажу, что у меня значение типа uint64_t
рассматривается как последовательность октетов (1 октет = 8 бит). Известно значение uint64_t
, содержащее только один бит в позиции MSB. Таким образом, значение uint64_t
может быть в одном из следующих двоичных представлений:
00000000 00000000 00000000 00000000 00000000 00000000 00000000 10000000 pos = 7
00000000 00000000 00000000 00000000 00000000 00000000 10000000 00000000 pos = 15
00000000 00000000 00000000 00000000 00000000 10000000 00000000 00000000 pos = 23
00000000 00000000 00000000 00000000 10000000 00000000 00000000 00000000 pos = 31
00000000 00000000 00000000 10000000 00000000 00000000 00000000 00000000 pos = 39
00000000 00000000 10000000 00000000 00000000 00000000 00000000 00000000 pos = 47
00000000 10000000 00000000 00000000 00000000 00000000 00000000 00000000 pos = 55
10000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 pos = 63
Мне нужна быстрая функция, которая возвращает заданную позицию бита, но возвращает 0, если бит не установлен.
Если возможно, я хочу его без каких-либо циклов и ветвлений.