【发布时间】:2019-07-02 06:21:24
【问题描述】:
我正在尝试打印一个 32 位二进制整数,其中 8 位由空格分隔。 ex (00000000 00000000) 然后结果应该用于将来的测试,例如我将集成 512 作为 y。
#define CHAR_BITS 8
void displayBits(unsigned int n){
int sup = CHAR_BITS*sizeof(int);
while(sup >= 0)
{
if(n & (((long int)1) << sup) )
printf("1");
else
printf("0");
sup--;
}
printf("\n");
return;
}
【问题讨论】:
-
你能试着改一下这个问题吗?这并不能真正传达你想要做什么。也许用期望的输出来表达。
-
我的代码它的作用是打印 32binary,如 00000000000000000000000.... 而我希望它每八个 0 打印一个空格
-
如果代码需要“打印 32 位二进制整数”而不是使用
(u)int32_t而不是int并避免 假设int是 32 位。 -
关于:
if(n & (((long int)1) << sup) )这有可能导致未定义的行为。移位 1 时,使用unsigned int' orlong unsigned int, notlong int`
标签: c binary printf bit unsigned