看板 EE_DSnP 關於我們 聯絡資訊
bitwise的運算子們 & AND | OR ~ NOT ^ XOR << left shift >> right shift // 以下 (N)_base 代表 N是個以base為基底的數 // 這邊以4bits做範例,請自行推廣到32bits A = 11; // (11)_10 = (1011)_2 B = 13; // (13)_10 = (1101)_2 A & B ==> (1001)_2 = (9)_10 A | B ==> (1111)_2 = (15)_10 ~A ==> (0100)_2 = (4)_10 ~B ==> (0010)_2 = (2)_10 A ^ B ==> (0110)_2 = (6)_10 A << 2 ==> (1100)_2 = (12)_10 B << 3 ==> (1000)_2 = (8)_10 A >> 1 ==> (0101)_2 = (5)_10 B >> 4 ==> (0000)_2 = (0)_10 一個unsigned的最高bit要怎麼樣取得呢? unsigned n = 2147483648; // 2^31 unsigned v = n & (((unsigned)1) << 31 ); // c++的常數default是signed if ( v != 0 ) ==> 最高bit = 1 else ==> 最高bit = 0 大概是這樣 希望有幫助XDD ※ 引述《kome5566 (j3xu.4)》之銘言: : 我simulation unsigned這樣寫不知對不對? : 我先把所有讀到的0 1存到一個vector, : 然後做32次 |= : unsigned x; : x &= 0x0; : 若在i的位置是1, x |= (2^i); : 這樣是對的嗎= =? : 謝謝回答!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.25.108
wmin0:(n >> 31)&1 就沒有sign和unsign的問題了 01/15 10:28
TommyKSHS:推阿南學姊 XD 01/15 11:18
anfranion:小新好招! 01/15 11:20
vincere:推!!! 01/15 11:24
azureching:推學姊XD 01/15 13:05
kome5566:大概了解了... 非常感謝!!! 01/15 14:19