1
讓我們的加位掩碼狀態字節數組:多一點更優雅的解決方案轉移
char status[10];
現在,讓我們說,我們要拉三號位出每個狀態字節,並把它們變成一個int ,其中所述LSB的int是狀態[0]比特3,下一個是狀態[1]位3等
int foobits = 0;
for(i = 0; i < 10; i++)
{
foobits |= ((status[i] & 0x04) >> 2) << i;
}
我的問題是:是否有實現該目的的另一種方式涉及僅一個移?
編輯:我試圖使用foobits來包含status [i]位#3s的位數組。
你爲什麼會擔心換班?無論如何,這在大多數CPU上都是CPU指令。 –
如果一切順利,爲什麼要擔心? –
它可以在數據只移動一次的地方完成,但是它的代碼更多,速度更慢。這個代碼和它將要獲得的一樣好。 –