메모
면접 문제
5.4 다음 숫자
- 양의 정수가 하나 주어졌다. 이 숫자를 2진수로 표기했을 때 1비트의 개수가 같은 숫자 중에서 가장 작은 수와 가장 큰 수를 구하라.
5.5 디버거
- 다음 코드가 하는 일을 설명하라.
- ((n & (n - 1)) == 0
5.6 변환
- 정수 A와 B를 2진수로 표현했을 때, A를 B로 바꾸기 위해 뒤집어야 하는 비트의 개수를 구하는 함수를 작성하라.
5.7 쌍끼리 맞바꾸기
- 명령어를 가능한 한 적게 사용해서 주어진 정수의 짝수 번째 비트의 값과 홀수 번째 비트의 값을 바꾸는 프로그램을 작성하라(예: 0번째 비트와 1번째 비트를 바꾸고, 2번째 비트와 3번째 비트를 바꾸는 식으로).
5.8 선 그리기
- 흑백 모니터 화면은 하나의 바이트 배열에 저장되는데, 인접한 픽셀 여덟 개를 한 바이트에 묶어서 저장한다. 화면의 폭은 w이며, w는 8로 나누어 떨어진다(따라서 어떤 바이트도 두 행에 걸치지 않는다). 물론, 화면 높이는 배열 길이와 화면 폭을 통해 유도해 낼 수 있다. 이때 (x1, y)에서 (x2, y)까지 수평선을 그려주는 함수를 작성하라. 메서드 용버(method signature)은 다음과 같다.
- drawLine(byte[] screen, int width, int x1, int x2, int y)
댓글