我想使用以下函数以二进制模式打印一个整数:
#include <stdio.h>
void print_binary(int n)
{
int i = 0;
for (i = sizeof(n)*8 - 1; i >= 0; i--)
{
printf("%d", ((n & ((1 << (i + 1)) - 1)) >> i) ? 1 : 0);
}
}
主程序
int main(int argc, char *argv[])
{
printf("%d in binary:\n", atoi(argv[1]));
print_binary(atoi(argv[1]));
printf("\n");
printf("%d in hex: 0x%x\n", atoi(argv[1]), atoi(argv[1]));
return 0;
}
如果我将 -1 传入其中,则输出不正确,出了什么问题?
-1 in binary:
01111111111111111111111111111111
-1 in hex: 0xffffffff
是什么导致最高有效位变为 0?