[問題] 關於bitwise的問題

看板C_and_CPP作者 (韓森慢)時間13年前 (2011/08/18 02:50), 編輯推噓4(4012)
留言16則, 9人參與, 最新討論串1/2 (看更多)
使用Dev c++ 想請問如果要將某bit變為1,卻不影響其他bits 可以寫成 int i=11; //00001011 i = i | (1<<2); //將第二位變為1 printf("%d", i); //等於15,00001111 ---------------------------------------------------------- 如果反過來要將某bit變為0,卻不影響其他bits 我的想法是 int j=15; //00001111 if(j & (1<<2)) //判斷要變換的bit是否為1 j -= (1<<2) //是1就減掉 printf("%d",j); //等於11,00001011 不知道這樣的作法,有沒有問題? 或者還有沒有其他更好的作法? 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.121.4.188

08/18 03:08, , 1F
直接接收bitwise運算後的結果
08/18 03:08, 1F

08/18 03:21, , 2F
j &= ~(1 << 2);
08/18 03:21, 2F

08/18 03:30, , 3F
瞭解了…謝謝1、2F
08/18 03:30, 3F

08/18 03:38, , 4F

08/18 03:39, , 5F
.. 我慢了好多拍.. Orz..
08/18 03:39, 5F

08/18 03:43, , 6F
還是非常感謝tropical大大 XDDD 您的範例好專業!!
08/18 03:43, 6F

08/18 03:45, , 7F
謝謝你,t大 (喂)
08/18 03:45, 7F

08/18 03:51, , 8F
j 大, 後面消音的那句話已經不痛不癢了..
08/18 03:51, 8F

08/18 03:58, , 9F
oh 對了, TAOCP,Vol4, 1A, 都在講 bitwise, 一百多頁..
08/18 03:58, 9F

08/18 04:14, , 10F
該不會t大都看完了吧…!!
08/18 04:14, 10F

08/18 04:20, , 11F
怎可能..我還沒資格發簡歷給比爾蓋茲..
08/18 04:20, 11F

08/18 08:41, , 12F
比爾蓋茲OS:我退休了,收你簡歷幹麼
08/18 08:41, 12F

08/18 11:04, , 13F
j &= 0xFB , 跟 facebook 做連接唷 ...ccc
08/18 11:04, 13F

08/18 14:43, , 14F
推另一個方法, 也可以先OR 1然後再XOR同一個bit也可以清掉
08/18 14:43, 14F

08/18 16:32, , 15F
推H大的方法~~感謝您!
08/18 16:32, 15F

08/18 20:52, , 16F
j &= j^(1<<2);
08/18 20:52, 16F
文章代碼(AID): #1EJ0rlRo (C_and_CPP)
文章代碼(AID): #1EJ0rlRo (C_and_CPP)