我有要求做了多項的功能只有使用這些運營商的分配:高效地具有1全1一個int而且是一個0 0入住
! 〜&^| + < < >>
在有一些是有益的,使一些整數的問題,X,成爲全1是否含有1秒,但留0,如果是0。我之所以這樣做是這樣我就可以回Y或Z這樣的:
// One of the two conditional values is now 0
int conditionalA = mask&y;
int conditionalB = ~mask&z;
// One of the values is combined with 0 using |
int out = conditionalA|conditionalB;
return out;
在那裏我做了面具是這樣的:
// Make any x other than 0 all 1s
int mask = x;
mask |= mask>>1;
mask |= mask>>2;
mask |= mask>>4;
mask |= mask>>8;
mask |= mask>>16;
mask |= mask<<1;
mask |= mask<<2;
mask |= mask<<4;
mask |= mask<<8;
mask |= mask<<16;
必須有一個更好的方式做面膜所有的1或0,但我想不出一個更有效解。再次,這是很重要的0保持爲0如果x爲0
編輯:如果語句不是怎麼樣的選擇
我猜你不能使用文字常量? – Jack
我可以,但有進一步的限制(只允許寫入0x0 - 0xff之間的數字,如果他們需要更大的變化)。我不明白他們會如何幫助,雖然 – asimes
看一下這個收集的位扭曲的黑客:http://graphics.stanford.edu/~seander/bithacks.html – vonbrand