我不能在下面的代碼中C.顯示位運算符的結果,一個& b應該是100001和a | b 111111.但是,打印結果不同。我試圖用itoa和itoa來做這件事,但無濟於事。爲什麼程序不能正確打印答案?
#include<stdio.h>
#include<stdlib.h>
int main (int argc, char* argv[]) {
unsigned a = 101101;
unsigned b = 110011;
unsigned c = a&b;
unsigned d = a|b;
char s[100];
char t[100];
itoa(c,s,2);
itoa(d,t,2);
printf("%s\n",s); /* Shouldn't it produce 100001?
Instead I get 11000100010101001*/
printf("%s\n",t); /* Ought to print 111111.
Instead it prints 11010111111111111 */
return 0;
}
謝謝
聽起來像你想要二進制文字,看到這個問題http://stackoverflow.com/questions/2611764/can-i-use-a-binary-literal-in-c-or-c – WildCrustacean
由於鏈接的問題建議使用Boost C++庫,我會建議它不是一個很好的匹配。 –
鏈接的問題確實涵蓋了C/C++,但它也表示BOOST_BINARY可以用於C.這只是一個答案,那裏還有很多其他相關信息。 – WildCrustacean