Я пытаюсь выбрать биты [0: 2] и биты [6: 8] битовой строки 1010000000001. Биты [0: 2] равны 001, а биты [6: 8] - 000. Я попытался выбрать эти биты с:Выбор бит в C
int instr = 0x1401;
int src2 = (instr & 0x0006); //get bits [2:0]
int src1 = (instr & 0x01C0) >> 6; //get bits [6:8]
printf("%04x, %04x",src2, src1);
Однако я получаю, что SRC1 и src2 оба 0000. может кто-то пожалуйста, помогите мне понять, что я делаю неправильно, поэтому я могу выбрать биты [0: 2] и [ 6: 8]?
Я пытаюсь выбрать бит [0: 2] и [6: 8] – foobar5512
1 + 2 + 4 = 7. Поэтому используйте '0x7', чтобы получить три младших значащих бита, а не' 0x6'. –
Бит 0 имеет значение 1, а не 0, поэтому ваша маска 6 равна-1. – kfsone