서명 된 번호에서 비트 필드를 추출합니다
-
06-07-2019 - |
문제
32 비트 정수에 저장된 숫자 (2s 보완)에 서명했으며 16 비트 필드를 추출하고 싶습니다. 32 비트 서명 숫자에서 낮은 16 비트를 추출하면 원래 (32 비트) 숫자가 16 비트에 맞는 한 결과가 정확합니까?
양수의 경우 사소하게 사실이며, 부정적인 것 같습니다. 그러나 입증 될 수 있습니까?
미리 감사드립니다
다른 팁
내 (두 번째) 질문을 읽은 후, 비트를 "추출"해야하는 것처럼 보이지 않고 정수를 변환합니까?
즉, 다음과 같은 일을합니다.
int negative = -4711;
short x = (short) negative;
이 경우 컴파일러는 원래 번호의 정밀도가 가능한 한 할당에서 변환되도록합니다. 기본 하드웨어가 2 : S 보완을 사용하지 않더라도 마찬가지입니다. 그것이 그렇다면, 이것은 Motti가 설명한 것처럼 단지 잘린 것일 수 있습니다.
제휴하지 않습니다 StackOverflow