4 개의 8 비트 값을 하나의 32 비트 값으로 저장하기 위해 32 비트 변수를 사용하고 있습니다.8 비트 MCU에서 32 비트 가변 쉬프트
32_bit_buf[0]= cmd[9]<<16 | cmd[10]<<8| cmd[11] <<0;
cmd
32 비트 변수는 I 0xFFFFBBCC
를 얻고 인쇄 그러나 데이터
cmd [9]=AA
cmd[10]=BB
cmd[11]=CC
부호와 문자 형태이다.
Architecture를 8 비트 AVR XMEGA
Language- C
내가 잘못거야 어디 사람이 알아낼 수 있습니다.
이러한 변수의 정의가 중요합니다. int보다 작은 모든 값은 먼저 int로 승격됩니다. 'int'가 서명되고, 부호 비트를 밀 때 행동은 정의되지 않습니다. 그런 다음 값은 32 비트 버퍼로 부호 확장됩니다. 심지어 * 정의가 중요합니다. –
https://stackoverflow.com/questions/2280663/in-ac-expression-where-unsigned-int-and-signed-int-are-present-which-type-will –
@AnttiHaapala 부호 비트는 * 즉각적인 문제는 여기에 있지만 다음 질문이 될 수 있습니다 ... 내 답변에 추가했습니다. –