作者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