4자리 이진수의 lsb부터 1을 만날 때 까지 msb로 거슬러 올라가고, 1을 만나면 거슬러 올라간 횟수를 출력하는 회로입니다.
출력
0000 -> 000
0001 -> 001
0010 -> 010
0110 -> 010
1010 -> 010
1110 -> 010
0100 -> 011
1100 -> 011
1000 -> 100
C로 만들라고 하니깐 잘 안맞네요
(인텔 프로세서 기준으로 매우 빠른 속도로 처리하여야 합니다.)
4자리 이진수의 lsb부터 1을 만날 때 까지 msb로 거슬러 올라가고, 1을 만나면 거슬러 올라간 횟수를 출력하는 회로입니다.
출력
0000 -> 000
0001 -> 001
0010 -> 010
0110 -> 010
1010 -> 010
1110 -> 010
0100 -> 011
1100 -> 011
1000 -> 100
C로 만들라고 하니깐 잘 안맞네요
(인텔 프로세서 기준으로 매우 빠른 속도로 처리하여야 합니다.)
BSF 만들고 있구만 ㅋㄷㅋㄷㅋㄷ
과제는 스스로 하자
__asm bsf 써. 그걸 뭐하러 직접 구현함. 그거 자체가 속도 저하인데...
log2로 구할라고 할려했는데 그건 반대쪽껄 구하는 거라서...
뭐 무식하게 짜면... result = 0; if(value) while(!(value & 1)) result++, value >>= 1; 라고 하면 되긴 할 듯...
아 잘못 짰다. if 문의 조건을 value && ++result 로 수정.
왜 그래. 비트 4개로 놀거면 그냥 배열에 다 박아.
32비트쯤 지원할거면 16개 배열을 일곱 번 >> 여덟번 & 해서 쓰든지 ㅋㅋㅋㄷ (루프 없이)
http://dblack.tk
커뮤니티 사이트 입니다 많은 이용 부탁 드립니다.