2014-10-10 140 views
0

我想了解c中的数字表示法。如果我声明一个int number=0;,然后为其分配一个二进制表示的值,即number= 0b0010,如何使用printf打印出0010c中的二进制数和字符串表示形式

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

+0

您不需要使用二进制文字分配值。要打印二进制表示,请检查以下答案:http://stackoverflow.com/questions/111928/is-there-a-printf-converter-to-print-in-binary-format – 2014-10-10 02:22:20

+1

在C中,没有内置支持用二进制文字或用'printf()'打印二进制数字。您可以使用十六进制,十进制或八进制。 – 2014-10-10 02:26:08

+0

'int mask = 0x4;/*或任何第二个位置对你来说意味着什么*/printf(“%d”,(number&mask)!= 0);' – chux 2014-10-10 03:07:31

回答

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

写得很快,所以请原谅我的错误。

相关问题