나는 (아주) 짧은 코드를 리비전으로 C에 작성하려하고있다.C에서 비트 검사 - 오답인가요?
내 교육 및 기타 게시물에 따라;
How do you set, clear, and toggle a single bit?
다음 코드는 변수 준비에 "1"값을 배치해야합니다, 그럼에도 불구하고,이 값 (64) 다른 모든 제품은 테스트 비트의 단지 값이 배치되는 것을 나타냅니다 배치하지 단순히 두 숫자 (숫자와 (1 < < x))의 결과와 함께 - 실제로 64 일 것입니다! 이 경우입니까 아니면 단순히 잘못된 단계를 취하고 있습니까?
uart->status |= (1<<6); //Set bit 6 to 1
char input = 0;
int ready = (uart->status) & (1<<6); //Should mean ready = 1?, a
if(uart->status & (1<<6) == 1) { //ready actually = 64
input = uart->rx;
} else {
input = 0;
}
대단히 감사합니다.
다윗
'&'(비트 AND (), 비트를 지울 것입니다.비트를 설정하려면'|'(비트 OR)을 사용하십시오 –
변수의 6 번째 비트 인 uart-> status를 확인하고 싶습니다. 만약 a가 1이라면 1 & 1은 1을 줄 것이고, 0이면 1 & 0은 0을 결과로 취할 것입니다. – davidhood2
'64 & 64'의 결과는'64'입니다. 왜 그것이'1' (?)이 될지 확신하지 못합니다. – Michael