4bit 씩 바꿀 수 있는 방법이 있나요?
글쓴이: jsm427 / 작성시간: 월, 2009/12/07 - 2:48오후
가장 작은 변수형인 character가 8bit 라서..
4bit씩 바꾸는 방법이 있는지 여쭤보고 싶습니다.
아래에 제가 질문을 올렸던 것이 있는데, 원인을 대충 찾은 것 같아서 다시 질문드립니다.
예를 들어서,
char 4bit_change 라는 변수가 있다면
4bit_change = 1111_1111 이라는 값을 넣어준 다음에
4bit_change의 처음 4비트만 마음대로 변경하고, 뒤에 4비트는 변경하지 않을 수 있는 방법이 있는지 여쭤보고 싶습니다.
4bit_change &= 0x0F;
4bit_change |= 0xa0;
이런 식으로 하면 뒤에 4bit는 그대로이고, 앞에 4bit만 a로 바꾸는 것이 가능할 것이라 생각하였는데..
변수가 하드웨어 레지스터에 저장되는데, bit 연산자를 사용하면 제대로 작동하지 않습니다.
다른 방법이 있나요?
Forums:
아마 volatile 문제가
아마 volatile 문제가 아닌 듯 싶네요..
다음과 같이 한번
다음과 같이 한번 테스트 해보시면 어떨까요?
그 하드웨어에
그 하드웨어에 한정된 문제같군요. 그 레지스터를 읽으면 썼던 값 그대로 읽히나요?
&= |= 이런 연산자 써도 한번 읽은 다음에 그 값에 and/or 해서 쓰기를 하는 겁니다. 그 레지스터가 읽기 모드랑 쓰기 모드랑 다르게 동작한다면, 썼던 값을 계속 들고 있든지 아니면 방법 없습니다.
-----------------------
농담은 설명하기 싫어요
네 하드웨어에서 값을 읽어오지 못하는 것 같습니다.
아.. 그러면 이전 값을 저장하는 변수를 따로 하나 만들면 작동할 수 있을까요?
따로 저장하는 변수를 두는 방법으로 해결했습니다. 감사합니다.
정말 큰 도움이 되었습니다. 감사합니다.!
댓글 달기