Почему полезно считать количество бит?
Я видел множество вопросов о подсчете количества установленных бит в insert type of
вход, но почему это полезно?
Для тех, кто ищет алгоритмы подсчета битов, посмотрите здесь:
4 ответа
Вы можете рассматривать строку битов как set
с 1, представляющим членство в наборе для соответствующего элемента. Поэтому количество битов дает вам population count
из набора.
Практические применения включают сжатие, криптографию и коды с исправлением ошибок. См., Например, http://en.wikipedia.org/wiki/Hamming_weight и http://en.wikipedia.org/wiki/Hamming_distance.
В иронической манере это полезно для вопроса об интервью, потому что оно требует детального мышления низкого уровня и, кажется, не преподается в качестве стандартного алгоритма в компьютерных курсах.
Некоторым людям нравится использовать растровые изображения, чтобы указать наличие / отсутствие "материала".
Существует простой способ взлома младшего значащего 1 бита в слове, преобразования его в поле единиц в битах под ним, а затем вы можете найти номер бита, посчитав 1-бит.
countbits((x XOR (x-1)))-1;
Смотреть это работает.
Let x = 00101100
Then x-1 = 00101011
x XOR x-1 = 00000111
У которого установлены 3 бита, поэтому бит 2 был наименее значимым 1-битным в исходном слове
Если вы используете свою собственную схему четности, вы можете посчитать количество битов. (В общем, конечно, я бы предпочел использовать чужой.) Если вы эмулируете старый компьютер и хотите отслеживать, как быстро он работал на оригинале, у некоторых были команды умножения, скорость которых варьировалась в зависимости от числа. 1 бит.
Я не могу вспомнить ни разу, когда бы хотел сделать это за последние десять лет или около того, поэтому я подозреваю, что это скорее упражнение по программированию, чем практическая необходимость.