C语言问题,读取两个整数并打印两个整数之间的所有整数

请问这个怎么做?编写一个 C 程序,它读取两个整数并打印两个整数之间的所有整数,这些整数的底部 2 位被设置。
只打印两个整数之间的整数,不应打印两个整数本身。
提醒:一点被认为是设置,如果它是一个1,并且未设置,如果它是一个0。
所以:
19,这是10011二进制,具有其底部2个比特集。
21,这是10101二进制,并没有其底部2个比特集。
在// PUT YOUR CODE HERE写完整内容,写一下代码蟹蟹。

img

#include <stdio.h>

// read two integers and print all the integers which have their bottom 2 bits set.

int main(void) {
    int x, y;

    scanf("%d", &x);
    scanf("%d", &y);

    // PUT YOUR CODE HERE

    return 0;
}

要求用位运算吗?将这个整数和3进行与操作,如果结果为3,则符合条件

#include <stdio.h>
// read two integers and print all the integers which have their bottom 2 bits set.
int main(void) {
    int x, y;
    scanf("%d", &x);
    scanf("%d", &y);
    while(x<y-1)
    {
        x=x+1;
        if(x&3==3)
            printf("%d\n",x);
    }
    return 0;
}
 

#include <stdio.h>
int main(void) {
    int x, y;
    scanf("%d", &x);
    scanf("%d", &y);
    int i,a,b,t;
    for(i=x+1;i<y;i++){
        t=i;
        a=t%2;
        t/=2;
        b=t%2;
        if(a==1&&b==1){
            printf("%d\n",i);
        }
    }
    return 0;
}