按位运算并检查整数的第n位

时间:2016-12-05 19:19:06

标签: c bitwise-operators

以下主要计划:

#include <stdio.h>
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定义的代码,以便输出程序 看起来如下: 您可以将set_flag函数视为取整数并确保第n位为1。 check_flag 函数只返回一个整数,当第n位为零时为0,当它为1时返回1.你可以找到移位

输出应为

1000 0000 0000 0001 0000 0000 000 1000

我不明白问题的大胆部分。

有人可以向我解释这个问题。所以我应该检查整数的第n位。但是初始整数是0.意味着没有第n位的值为1.所以我应该在这做什么?

1 个答案:

答案 0 :(得分:1)

它们意味着set_flag函数修改其第一个参数指向的值,以便设置第(n + 1)个位。