在 C 程序中存储"binary"数据类型



我需要创建一个程序,将一个数字系统转换为其他数字系统。我在Windows(Dev C++)中使用了itoa,我唯一的问题是我不知道如何将二进制数转换为其他数字系统。所有其他数字系统的转换都相应地工作。这是否涉及存储要使用%转换的输入之类的内容?

以下是我的工作片段:

case 2:
{
printf("nEnter a binary number: ");
scanf("%d", &num);
itoa(num,buffer,8);
printf("nOctal        %s",buffer);
itoa(num,buffer,10);
printf("nDecimal      %s",buffer);
itoa(num,buffer,16);
printf("nHexadecimal  %s n",buffer);
break;
}

对于十进制我使用%d,对于八进制我使用%o,对于十六进制我使用%x。二进制的正确答案是什么?感谢您将来的回答!

内存中已经有了二进制形式的数字。这些%d、%o和%x只是类似printf的函数的提示,它们知道如何解释参数并在十进制/八进制/十六进制表示之间转换。printf没有二进制格式。相反,您可以对所有单独的位进行迭代,如下所示:

for(int i = 0; i < sizeof(num)*8; i++)
{
printf("%u", !!(byte & (1 << i)));
}
printf("n");

这将从左起打印一个字节的所有位。

最新更新