unsigned short int temp, temp2; temp = 0xbc61; // 1011110001100001 // temp2 has to be 0x61 (01100001) but I don't know how to shift, mask or whatever temp2 = (temp << 8); // this doesnt work, because I get 0x6100 (110000100000000)
Чтобы выбрать 8 младших битов 1011110001100001, вам нужно выполнить побитовую операцию И с 11111111:
1011110001100001
11111111
1011110001100001 & 0000000011111111 ------------------ 0000000001100001
То есть
temp2 = temp & 0xff; // or 255