Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c语言中的二进制数和字符串表示法_C_String_Binary_Int_Hex - Fatal编程技术网

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

我试图理解c中的数字表示法。如果我声明一个
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)