Код: Выделить всё
extract_msbs(0x'00110010'00010111'00000010'11001110'00100000'11001101'01011000'01111011) = 00010100
Идея, которую я пытался развить, заключается в умножении исходной 64-битной маски на некоторую константу, которая собирает все ведущие биты в старших 8 байтах, а затем сдвиг вправо на 56. Однако я этого не сделал. смог найти правильную константу (моя первоначальная идея была 0x0102040810204081ULL, но это дает неправильный результат 10000001 вместо 00000001 для 0x0000000000000080).
Может ли кто-нибудь придумать эффективный способ сделать это?
Подробнее здесь: https://stackoverflow.com/questions/793 ... -integer-i