바이트 배열에서 12 비트 정수를 읽습니다. 그 숫자는 음수 일 수 있지만, C#에서는 사용 가능한 변수 int16/int32로 변환하는 방법을 알 수 없습니다. 비트 시프 팅 (bit shifting)이나 다른 비트 연산 (bitwise operation)을해야 할 필요가 있다는 생각이 들지만, 지금까지 눈에 띄었다. 누군가가 올바른 방향으로 나를 가리킬 수 있습니까?12 비트 정수를 16 또는 32 비트로 변환하십시오.
var x = 0xFFF;
-1로 인쇄해야하지만 자연스럽게 int32로 변환되어 4095로 인쇄됩니다.이 경우 int16 또는 int32로 변환해야합니다. 음수 값을 유지하려면 어떻게해야합니까?
대단히 감사합니다. 여기서 무슨 일이 벌어지고 있는지 설명하는 마음? 나는 무엇을 알고있다. >>^하지만 꽤 이해하지는 마라. – Clarke76
기본적으로 부호 비트 만 남을 때까지 오른쪽으로 이동합니다. 0이면 원래 값을 반환합니다. 1이면 -1 (0xFFFFFFFF), 하위 12 비트 ('xor')를 끈 다음 원래 값으로'or'하여 비트를 켭니다. 결과는 기본적으로 32 비트 값의 상위 20 비트 만 켜는 것입니다. –
예 ... 나는 종이에 모든 것을 쓰고 결국 무슨 일이 일어 났는지 보았습니다. 정말 도움이되었습니다. 마지막 비트가 부정적인 플래그로 사용된다는 사실을 알았습니다. 그 후에는 쉽게 따라 할 수있었습니다. 다시 한번 감사드립니다. – Clarke76