Из ваших соглашений об именах, я полагаю, вы пытаетесь выполнить сдвиги битов в DWORD.DWORD составляет 4 байта, что означает 32 бита (в 32-битном компьютере).Таким образом, когда вы сдвинете DWORD 32 раза, у вас будут все нули в DWORD.
Кроме того, ваше утверждение:
(dwNewBitmap >> iBitShift) & 0x01
пытается сдвинуть более 32 бит, так как iBitShift инициализируется с 82, что означает, что он не сможет сдвинуть 82 бита, учитывая, что естьтолько 32 бита, которые могут быть смещены вокруг.
Я надеюсь, что это проясняет поведение, которое вы считаете «странным».
РЕДАКТИРОВАТЬ: Основано на некоторой информации от OP В комментариях:
Похоже, растровое изображение хранится в виде двоичных данных в реестре.Вам нужно прочитать эти двоичные данные в байтовый массив, а затем разбить логику, чтобы выбрать только DWORD из этих данных за раз (сделать это в цикле), а затем проверить биты этого DWORD в цикле из 132. Таким образом, вы узнаете, какие биты установлены, а какие нет.