0보다 큰 양의 정수 x에 대하여 log2(x)는 밑을 2로하는 로그x의 정수부분을 리턴해야함.
ex) log2(16) == 4, log2(1) == 0, log2(33) == 5
int log2(int x)
{
int ret =0;
//code
return ret;
}
//code에 들어갈 코드는?
규칙
1.사용가능한 연산자들: ! ~ & ^ | + << >> (&&, || , -, ? 같은건 사용불가능)
2. 1에서 제시한 연산자들의 사용개수 제한: 90
3. if, for, do,while, switch 같은건사용불가능.
4. 다른 함수call 불가능.
5. int이외의 자료형 사용 불가능.
6. 정수 상수는 1이상 0xFF이하만 사용가능. ( 0x ABCD, 0xFFFFFFFF같은건 사용불가능)
7, 로컬변수만 사용가능.
가정
1. int자료형은 4바이트.
2. <<는 arithmetic shift임.
개념글에 있는 비트연산으로 이진수의 1의 갯수 카운팅 하는거랑 비슷한 문제네요. 하지만 전 지잡대생이라 못풉니다.
지잡대생을 무시하는겁니까?
재귀 가능? 제발
https://ideone.com/fSrDyt