我想了解c中的數字表示法。如果我聲明一個int number=0;
,然後爲其分配一個二進制表示的值,即number= 0b0010
,如何使用printf
打印出0010
?c中的二進制數和字符串表示形式
另外我們怎麼能說出0010
的第二位,在這種情況下是0?我知道有一個sprintf
函數將數字轉換爲字符串,但似乎只有十進制和十六進制數字?謝謝你的幫助!
我想了解c中的數字表示法。如果我聲明一個int number=0;
,然後爲其分配一個二進制表示的值,即number= 0b0010
,如何使用printf
打印出0010
?c中的二進制數和字符串表示形式
另外我們怎麼能說出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;
}
寫得很快,所以請原諒我的錯誤。
您不需要使用二進制文字分配值。要打印二進制表示,請檢查以下答案:http://stackoverflow.com/questions/111928/is-there-a-printf-converter-to-print-in-binary-format – 2014-10-10 02:22:20
在C中,沒有內置支持用二進制文字或用'printf()'打印二進制數字。您可以使用十六進制,十進制或八進制。 – 2014-10-10 02:26:08
'int mask = 0x4;/*或任何第二個位置對你來說意味着什麼*/printf(「%d」,(number&mask)!= 0);' – chux 2014-10-10 03:07:31