c语言中的二进制数和字符串表示法
我试图理解c中的数字表示法。如果我声明一个c语言中的二进制数和字符串表示法,c,string,binary,int,hex,C,String,Binary,Int,Hex,我试图理解c中的数字表示法。如果我声明一个int number=0然后以二进制表示为其赋值,即number=0b0010,如何使用printf打印0010 另外,我们如何计算0010的第二个位置,在本例中是0?我知道有一个sprintf函数可以将数字转换成字符串,但它似乎只适用于十进制和十六进制数字?谢谢你的帮助 不能以二进制形式赋值。不过,您可以用十六进制赋值 int number = 0x2; int mask = 0x4; int result = 0; printf("%x\n", nu
int number=0代码>然后以二进制表示为其赋值,即number=0b0010
,如何使用printf
打印0010
另外,我们如何计算0010
的第二个位置,在本例中是0?我知道有一个sprintf
函数可以将数字转换成字符串,但它似乎只适用于十进制和十六进制数字?谢谢你的帮助 不能以二进制形式赋值。不过,您可以用十六进制赋值
int number = 0x2;
int mask = 0x4;
int result = 0;
printf("%x\n", number); // This will print in hex
result = (number & mask);
if(result != 0) {
printf("Second position is 1\n");
} else {
printf("Second position is 0");
}
我希望这对你有帮助。
输入一个数字并给出二进制表示,它也适用于负数
然后你可以从第n个位置得到钻头
#include <stdio.h>
int main(void)
{
int nr_to_binary = 0;
unsigned int mask = 0x80000000;
int position;
printf("Number: ");
scanf("%d", &nr_to_binary);
int i = (sizeof(nr_to_binary) * 8);
for(; i > 0; i--)
{
printf("%d", (nr_to_binary >> (i - 1)) & 1);
}
printf("\nPosition: ");
scanf("%d", &position);
printf("\n%d position: %d", position, (nr_to_binary >> position) & 1);
return 0;
}
#包括
内部主(空)
{
int nr_到_二进制=0;
无符号整数掩码=0x8000000;
内部位置;
printf(“编号:”);
scanf(“%d”、&nr\u到\u二进制文件);
int i=(sizeof(nr_到_二进制)*8);
对于(;i>0;i--)
{
printf(“%d”,(nr到二进制>>(i-1))&1);
}
printf(“\n位置:”);
扫描频率(“%d”,位置(&P);
printf(“\n%d位置:%d”,位置,(nr到二进制>>位置)&1);
返回0;
}
写得很快,所以请原谅我犯的任何错误。您不需要使用二进制文字赋值。要打印二进制表示,请检查以下答案:在C中,不支持使用printf()
以二进制形式打印二进制文字或数字。您可以使用十六进制、十进制或八进制。int mask=0x4;/*或者第二个位置对您意味着什么*/printf(“%d”,(数字和掩码)!=0)代码>