Объявление масок для побитовых операций

Я новичок в таких низкоуровневых операциях, как эта, надеюсь, кто-нибудь сможет указать на очевидную ошибку, которую я, должно быть, здесь совершаю.

//Input value - 00111100
//I want to get the value of the bits at indexes 1-3 i.e 0111.

byte mask = (byte)0x00001111; // This gives 17 not the 15 I'd expect 

byte shifted = (byte)(headerByte >> 3);
//shifted is 7 as expected

byte frameSizeValue = (byte)(shifted & mask); //Gives 1 not 7

Похоже, проблема заключается в том, как маска определена, но я не вижу, как ее исправить.

5
задан Tristan Warner-Smith 14 November 2011 в 15:50
поделиться