c언어에서 비트연산에 관한 함수 작성시 질문(8이 2의 3승인것을 알아내는법?)있습니다.

lmk378의 이미지

2의 3승을 구하는 연산은 다음과 같습니다.

x = 2 << 3;

x는 8이 되겠죠? 근데 8이 2의 몇승이냐는건 어떻게 할 수 있을까요?
조건문이나 반복문을 쓰지않고 세련되게 할 수 있는방법은 없을까요?

익명 사용자의 이미지

x=log2(8.0)

lmk378의 이미지

짱이내요~감사합니다.^_^

jick의 이미지

log2를 쓰는 것은 닭잡는 데 소잡는 칼을 쓰는 식이라, 되기는 하겠지만 좀 그렇구요...
"가장 작은 자릿수에서 1로 켜진 비트의 위치"를 알아내는 ffs라는 함수가 있습니다.

(표준인지는 모르겠지만 linux에서는 가능합니다.)