1
16 비트 부호 및 크기 정수를 8 비트 부호 및 크기 정수로 복사하는 C 코드를 구현하고 있습니다. 그게 가능한가? 누군가이 방법을 설명해 주시겠습니까?16 비트 정수를 8 비트 정수로 변환 하시겠습니까?
코드 :
int16_t a = 0x1234;
int8_t b, c;
어떻게 변수 C에 변수 b를 다음 두 자리로 처음 2 자리 숫자를 복사?
16 비트 부호 및 크기 정수를 8 비트 부호 및 크기 정수로 복사하는 C 코드를 구현하고 있습니다. 그게 가능한가? 누군가이 방법을 설명해 주시겠습니까?16 비트 정수를 8 비트 정수로 변환 하시겠습니까?
코드 :
int16_t a = 0x1234;
int8_t b, c;
어떻게 변수 C에 변수 b를 다음 두 자리로 처음 2 자리 숫자를 복사?
언어의 비트 연산자를 사용할 수 있습니다. 첫 번째 숫자와 두 번째 숫자를 얻으려면 숫자 8과 0 비트를 각각 이동해야합니다 (또한 255로 마스크해야 정확히 1 바이트 추출됩니다) :
int16_t i = 0x1234;
uint16_t n = i; // because shifting the sign bit invokes UB
int8_t hi = ((i >> 8) & 0xff);
int8_t lo = ((i >> 0) & 0xff);
그 모든 비트에 맞을 것이지만 정확히 두 부분을 "부호 및 크기 정수"라고 부르지는 않습니다. 특히 하반부는 부호없는 것으로 만 생각할 수 있습니다. – Thilo
@Thilo 대신 무엇을 제안하나요? (이것이 의미가 없다는 것을 깨닫지 만 질문은 그다지 의미가 없기 때문입니다.) –
답을 비판하는 것을 의미하지는 않습니다. 질문에 대한 단지 의견. 다른 방법으로 16 비트를 2x8에 맞출 수 없습니다. 추가 사인 비트를위한 공간이 없습니다. – Thilo