c中的二进制数和字符串表示

时间:2014-10-10 02:11:12

标签: c string binary int hex

我试图理解c中的数字表示。如果我声明int number=0;,然后为其分配二进制表示形式的值,即number= 0b0010,如何使用0010打印printf

另外我们怎么能说出0010的第二个位置,在这种情况下是0?我知道有一个sprintf函数可以将数字转换为字符串,但它似乎只适用于十进制和十六进制数字?谢谢你的帮助!

2 个答案:

答案 0 :(得分:0)

您无法以二进制形式分配值。你可以用十六进制分配。

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");
}

答案 1 :(得分: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;
}

写得快,所以请原谅我犯的任何错误。