我偶然發現了這個奇怪的問題。我得到2對四個八位組。四個八位字節的二進制表示
1) 255.255.255.0 (like a subnet mask)
2) 128.127.0.0 (fictive mask)
我的二進制表示應該是:
1) 11111111.11111111.11111111.00000000
2) 10000000.01111111.00000000.00000000
但是從我的簡單的應用程序,我得到:
1) 11111111.11111111.11111111.00000000
2) 11111110.01111111.00000000.00000000
我認爲這是錯誤的值,但請大家指正,我想我誤解了這件重要的事情。
生成的二進制表示的代碼是:
#include <stdio.h>
#include <stdlib.h>
void PrintBinary(unsigned int n)
{
unsigned int tmp;
int i = 1;
tmp = n;
do{
printf("%d", (n & tmp) ? 1 : 0);
if(i % 8 == 0 && i < 32)
printf(".");
++i;
n >>= 1;
}while(n>0);
printf("\n");
}
int main(int argc, char **argv)
{
unsigned int octet1 = 128;
unsigned int octet2 = 127;
unsigned int octet3 = 0;
unsigned int octet4 = 0;
unsigned int a = octet1 << 24 | octet2 << 16 | octet3 << 8 | octet4;
PrintBinary(a);
return 0;
}
你應該在這裏找到你需要的東西:http://stackoverflow.com/questions/111928/is-there-a-printf-converter-to-print-in-binary-format –
你可以更具體作爲您提供的鏈接包含如何打印二進制文件,如果您測試我的代碼,那麼這不是我的問題,因爲它會打印數字的二進制表示形式,但是當打印數字時,如果涉及到二進制表示形式,那麼在我的輸出結果中很奇怪理解。 –
您沒有顯示足夠的代碼。顯示一個完整的程序。不要讓我們猜測。 –