기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
int no = 11이라면...
int offset = (no / 32) << 2; // offset값을 계산하는데 왜 / 32를 하고 << 2를 하는지...결과는 0이 나옵니다.ㅜ u32 mask = 1 << (no % 32); // 왜 % 32를 할까요...ㅜ
2010.03.14 07:32:34 *.40.239.206
<1> / 32는 no가 32 보다 큰가 작은가를 판단하기 위한 조건문으로 이해하세요. 큰 경우에만 시프트가 의미가 있겠죠.
비트 연산으로 따지면, 하위 5개 비트 보다 위에 위치한 비트에 High가 있는 경우에만 연산을 유효하게 만들어 줍니다.
<2> % 32는 no의 32 보다 작은 숫자만 얻기 위한 연산입니다. 마찬가지로 비트 연산을 생각해 보면 하위 5비트만 유효하겠죠.
2010.03.14 07:42:05 *.140.0.103
32개로 자르는 겁니다.
음.....string을 bit 연산하도록 만들때 많이 쓰는 스타일인 듯
<1> / 32는 no가 32 보다 큰가 작은가를 판단하기 위한 조건문으로 이해하세요. 큰 경우에만 시프트가 의미가 있겠죠.
비트 연산으로 따지면, 하위 5개 비트 보다 위에 위치한 비트에 High가 있는 경우에만 연산을 유효하게 만들어 줍니다.
<2> % 32는 no의 32 보다 작은 숫자만 얻기 위한 연산입니다. 마찬가지로 비트 연산을 생각해 보면 하위 5비트만 유효하겠죠.