algorithm-study-of-GN / problem-of-coding-interview

코딩 인터뷰 완전 분석의 문제 해결 저장소입니다.
MIT License
16 stars 4 forks source link

맨 오른쪽 1을 0으로 바꾸시오 #39

Open ermaker opened 8 years ago

ermaker commented 8 years ago

입력: N ( >= 0, 정수) 출력: M ( >= 0, 정수)

N을 2진수로 표현했을때 나타나는 맨 오른쪽 1을 0으로 바꾸었을때의 값을 M이라고 하자. M을 출력하시오.

예: N: 10 -> 2진수로 표현하면 1010이고, 1010에서 맨 오른쪽 1을 0으로 바꾸면 1000이므로 M은 8이다. N: 8 -> 2진수로 표현하면 1000이고, 1000에서 맨 오른쪽 1을 0으로 바꾸면 0000이므로 M은 0이다.

ermaker commented 8 years ago
int f(int v)
{
  return v & (v - 1);
}