Я пишу функцию для печати бит, но я столкнулся с проблемой. Два цикла цикла кажутся мне идентичными, но по какой-то причине тот, который закомментирован, не печатает правильные биты.Почему изменение в инструкции if этого побитового действия вызывает ошибку?
int main()
{
unsigned int bits = 0x570FA1;
unsigned int mask = 0x800000;
printBits(bits, 24, mask);
return 0;
}
void printBits(unsigned int bit, int numbOfBits, unsigned int& mask){
for (int i = 1; i <= numbOfBits; i++){
if ((mask & bit) == 0){
cout << "0";
}
else {
cout <<"1";
}
mask = mask >> 1;
if (i %4 == 0){
cout << " ";
}
}
/* for(int i= 1 ; i <= numbOfBits ; i++){
if ((mask & bit) ==1){
cout << "1";
}
else{
cout << "0";
}
mask = mask >> 1;
if(i% 4 ==0){
cout << " ";
}
}*/
}
Учитывая начальное значение 'mask',' mask & bit' является либо 'mask', либо' 0'. Большую часть времени 'mask' не равен 1. –
Попробуйте выполнить код в отладчике и проверив аргумент инструкции' if'. –
Замените '== 1' на' == mask' или '! = 0'. – dasblinkenlight