Учитывая, что у меня есть значение uint 2402914, и я хотел бы захватить крайние левые 17 бит, где ошибка в моей логике, выполнив этот код:
int testop = 0;
byte[] myArray = BitConverter.GetBytes(2402914);
fixed (byte* p = &myArray[0])
{
testop = *p >> 15;
}
мой ожидаемый результат
50516.
myArray
это: [98, 170, 36, 0]*p
это указатель на myArray[0] или (byte)98, который вы затем сдвигаете на 15 позиций, прямо из 8-битного диапазона. Я думаю. Я немного заржавел с битовыми манипуляциями. - person asawyer   schedule 20.07.2011unsafe
- person asawyer   schedule 20.07.2011testop = 0
- person Jon Egerton   schedule 20.07.2011testop = 2402914 >> 15
? - person CodingWithSpike   schedule 20.07.2011(value) >> (32-17)
? - person Mark Segal   schedule 20.07.201101100010
Вам нужно всего лишь ›› 7, чтобы получить 0, у @Jason есть ›› 15 - person asawyer   schedule 20.07.2011