\D기존에 [0-9] 로 사용했었는데 \D로 숫자표현을 더 쉽게 할 수 있었다.
10진수에서 2진수로 바꾸면 toString(2)을 이용해서 바꾸게 되는데 당연하지만 string으로 바뀐다.
[ '1100', '100', '1111', '1', '1110' ] //이렇게 string값으로 바뀜.
그래서 length를 이용할 수 있게 된다.
그래서 이걸 언제 활용할 수 있냐면...10진수를 2로 나눴을 때 몇 번을 나눠야 1이 몫으로 남느냐를 확인할 때이다.
정수를 2로 몫이 1이 남을 때까지 나누는 횟수를 구하는 문제이다.
짝수의 경우는 2로 그냥 나누면 되고, 홀수는 1을 빼고 2로 나누면 된다.
짝수의 경우 2진법으로 나타냈을 때 2로 나누는건 2^0의 자리 하나를 없애는 것과 같다.
<예시>
14 (10진수) -> 1110 (2진수)
14 / 2 = 7 -> 111 (2진수)
홀수의 경우 1을 뺀 후 2로 나누는 건 2진법으로 나타낸 후 2^0의 1을 0으로 바꾸는 것과 같다. 그 후는 짝수의 경우와 같다.
<예시>
15 (10진수) -> 1111 (2진수)
15 - 1 = 14 -> 1110 (2진수)
14 / 2 = 7 -> 111 (2진수)