안녕하세요.
arm을 배우고 있는 와중에 보면, 어떤 레지스터의 몇번째 비트 값을 1로 set을 한다거나, 머 이런 경우 있지 않습니까? 프로그래밍 하는 걸 보면 1<<20 이런걸 자주 보는데, 1을 20번 왼쪽으로 쉬프트 한다는 게 맞는건가요 ?
그래서 20번째 비트가 1이 되는게 맞나요 ? 쉬프트 연산에 대해서 자세하게 나온 강의자료 같은거 없나요?
전문가님들 답변 부탁드립니다. 좋은 하루 보내세요.
arm을 배우고 있는 와중에 보면, 어떤 레지스터의 몇번째 비트 값을 1로 set을 한다거나, 머 이런 경우 있지 않습니까? 프로그래밍 하는 걸 보면 1<<20 이런걸 자주 보는데, 1을 20번 왼쪽으로 쉬프트 한다는 게 맞는건가요 ?
그래서 20번째 비트가 1이 되는게 맞나요 ? 쉬프트 연산에 대해서 자세하게 나온 강의자료 같은거 없나요?
전문가님들 답변 부탁드립니다. 좋은 하루 보내세요.
보통 마이컴에서 그렇게 사용합니다. 직관적이라서요.
예를 들어 avr 경우 PORTD.5 를 출력으로 할려면
DDRD |= (0x01 << 5 ) ;
이렇게 사용하곤 해요. 입력으로 할때는
DDRD &= ~(0x01<<5);
포트랑 직관적이기 때문에 실수할 확률이 줄어들죠.
DDRD = 0x20 ; // PORTD.5 출력 설정
예전에는 이렇게 쓴답니다.
겁나게 헷갈리죠 ^^. 그래서 32bit 마이컴 부터는 셋팅할게 많으니깐 위에서 처럼 사용하는 일이 많이 있습니다.