Я новичок здесь, но у меня есть некоторые вопросы о моем Computing 2 HW.Побитовые операторы
Учитывая основные функции:
void set_flag(int* flag_holder, int flag_position);
int check_flag(int flag_holder, int flag_position);
int main(int argc, char* argv[])
{
int flag_holder = 0;
int i;
set_flag(&flag_holder, 3);
set_flag(&flag_holder, 16);
set_flag(&flag_holder, 31);
for(i = 31; i >= 0; i--) {
printf("%d", check_flag(flag_holder, i));
if(i % 4 == 0)
printf(" ");
}
printf("\n");
return 0;
}
Мы должны завершить set_flag
и check_flag
и его предполагаемыми для отображения:
1000 0000 0000 0001 0000 0000 0000 1000
Теперь я действительно изо всех сил, чтобы понять, это. flag_holder
должен равняться 0 все время? Мой профессор сказал использовать поразряд и не умножать. Но похоже, что я мог бы просто реализовать массив из 32 '0 и установить 3-й, 16-й и 31-й элементы как 0s? Я заранее извиняюсь за беспорядочную настройку и спасибо тем, кто действительно читал это и помогал!
«Я заранее извиняюсь за беспорядочный набор вверх "- вы действительно пишете весь свой код на одной строке? В любом случае, я исправил его для вас, чтобы люди могли вам помочь. –
Кроме того, как каждый должен знать, что ваша проблема, когда вы не показываете нам весь ваш код? Если вы выполняете 'set_flag' и' check_flag', вы знаете, работают ли они или нет? Пожалуйста, исправьте это. –
«Но похоже, что я мог бы просто реализовать массив из 32 '0». Вы могли бы, но это не было целью упражнения. Вы должны манипулировать битами в переменной 'int'. Поэтому непонятно, какую помощь вы хотите от нас. – kaylum