作者anfranion (南‧生命的意義是經歷)
看板EE_DSnP
標題Re: [問題] unsigned
時間Sun Jan 15 09:40:31 2012
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
1F:推 wmin0:(n >> 31)&1 就沒有sign和unsign的問題了 01/15 10:28
2F:推 TommyKSHS:推阿南學姊 XD 01/15 11:18
3F:→ anfranion:小新好招! 01/15 11:20
4F:推 vincere:推!!! 01/15 11:24
5F:推 azureching:推學姊XD 01/15 13:05
6F:推 kome5566:大概了解了... 非常感謝!!! 01/15 14:19