2014-10-10 141 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; 
} 

寫得很快,所以請原諒我的錯誤。

相關問題