我试图理解c中的数字表示。如果我声明int number=0;
,然后为其分配二进制表示形式的值,即number= 0b0010
,如何使用0010
打印printf
?
另外我们怎么能说出0010
的第二个位置,在这种情况下是0?我知道有一个sprintf
函数可以将数字转换为字符串,但它似乎只适用于十进制和十六进制数字?谢谢你的帮助!
答案 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;
}
写得快,所以请原谅我犯的任何错误。