Это довольно простая задача, но я чувствую, что должен задокументировать ее на носителе. Идея состоит в том, что я должен написать функцию, которая принимает целое число без знака и возвращает количество битов 1, которое оно имеет (также известное как вес Хэмминга).

Как я это решил:

Что ж, в этом случае ввод представляет собой 32-битное число, поэтому я должен сначала преобразовать его в строку, чтобы перебрать фактические биты. Но JavaScript преобразует введенное число «n» в десятичное число. Например:

00000000000000000000000000001011 will become 521

Из-за такого поведения следующий естественный шаг, который мы собирались сделать, не сработает. Итак, мы создаем новую переменную, которой будет присвоен массив наших двоичных битов. Как вы спрашиваете? именно такой:

let digits = n.toString(2).split('');

Сначала мы преобразуем «n» в двоичную строку, используя метод toString() с аргументом 2. Затем мы разделяем его на каждую цифру, чтобы получить наш массив.

Затем, конечно, мы создаем переменную count со значением 0 (это будет возврат нашей функции). И мы перебираем наш массив «digits» с помощью простого «оператора if», который проверяет, равно ли digits[i] 1, и если да, то мы увеличиваем «count» на 1.

Вот и все! возвращаем счет, и вуаля!