[理工] 位元運算問題
看板Grad-ProbAsk作者earnestgirl (keep my heart calm)時間11年前 (2013/05/20 19:08)推噓0(0推 0噓 10→)留言10則, 2人參與討論串1/1
main()
{ int a = 0, b = 0x00000003, c = 0;
a = a | (1 << 1); // a | = 1 << 1;
a = a | (1 << 2); // a | = 1 << 2;
printf("a = %d\n" , a);
a = a & ~(1 << 2);
printf("a = %d\n" , a);
c = a ^ b;
printf("c = %d\n" , c);
}
輸出: a = 6
a = 2
c = 1
小妹不懂的是以下兩個主要問題:
1. 程式中整個位元運算的邏輯觀念?
2. 為什麼輸出結果第一個a是6? 下一個a是2? 而c是1呢?
麻煩高手幫忙解答,萬分感謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.164.252.82
→
05/20 23:24, , 1F
05/20 23:24, 1F
→
05/20 23:24, , 2F
05/20 23:24, 2F
→
05/20 23:44, , 3F
05/20 23:44, 3F
→
05/20 23:50, , 4F
05/20 23:50, 4F
→
05/20 23:51, , 5F
05/20 23:51, 5F
→
05/20 23:51, , 6F
05/20 23:51, 6F
→
05/20 23:52, , 7F
05/20 23:52, 7F
→
05/20 23:52, , 8F
05/20 23:52, 8F
→
05/20 23:55, , 9F
05/20 23:55, 9F
→
05/21 00:00, , 10F
05/21 00:00, 10F