2011-04-13 14 views
0

程序与位工作

typedef bitset<8> bits; 
char original = 0xF0F0F0F0; 
char Mask = 0xFFFF0000; 
char newBits = 0x0000AAAA; 

/*& operation with "0bit set 0" & "1bit give no change to original byte" */ 
cout<<"Original o: "<<bits(original)<<endl; 
cout<<"NewBits: "<<bits(newBits)<<endl; 
cout<<"Mask m: "<<bits(Mask)<<endl; 
cout<<"o & m with Mask: "<<bits(original & Mask)<<endl;/*0 set original bit as 0 */ 

结果

原稿O:11110000个
NewBits:10101010
掩模M:00000000
ö&米与面膜: 00000000
结果10101010

我明白六角&其结果..但....... o & m == 0000 0000所以bits(o & m | newBits)结果应该是0000 0000,不1010 1010 ......

我在哪里失踪概念...

谁能帮我请...

期待了良好的反响

谢谢

+4

'char original = 0xF0F0F0F0;'?真?给真正的代码怎么样? – ildjarn 2011-04-13 07:36:34

回答

6

o & m = 0000 0000newBits = 1010 1010。所以,如果你或他们(按位),你会得到1010 10100|0=0, 0|1=1, 1|0=1, 1|1=1的结果。

0000 0000 OR WITH 
1010 1010 
----------------- 
1010 1010 
----------------- 
+0

** @阿莎**谢谢...... – RidaSana 2011-04-13 07:40:24

+0

@小姐:您可以使用左侧的勾号接受答案。这样就可以回答问题并给回答者提供额外的奖励。 – 2011-04-13 07:44:38

+0

@ Space_C0wb0y:1111 0000,这里LSB是0,MSB是1 ..我是对吗? – RidaSana 2011-04-13 07:54:56