我试图翻转设置位的二进制位将被取消设置,反之亦然。就此而言,我首先需要知道如何将整数值转换为32位二进制值。
答案 0 :(得分:0)
我猜没有直接的功能。您可以使用Bitwise运算符处理int的二进制,但要在数组中获取二进制表示,您需要编写自己的函数。它会很简单。
答案 1 :(得分:0)
您可以使用左移运算符:
/* A 1 in the left-most bit, 0's everywhere else */
#define MASK 0x80000000
...
for (i = 0; i < 32; i++)
{
printf(num & MASK ? "1" : "0");
num << 1;
}
当然你应该考虑在不同的机器上,整数可能不是32位。
在每次迭代中,通过执行二进制和MASK
来测试最左边的位数是否为1。如果结果不为零,则打印1,否则为0。