Определить количество единичных битов в числе
Дано натуральное число меньше 256. Посчитать количество его единичных битов. Например, если дано число 9, запись которого в двоичной системе счисления равна 00001001 , то количество его единичных битов равно 2.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Посчитать количество единичных битов числа
1. Дано натуральное число меньше 256. Посчитать количество его единичных битов. Например, если дано.
Битовые операции: количество нулевых и единичных битов в целом неотрицательном числе
Вывести количество нулевых и единичных битов в целом неотрицательном числе.
Подсчитать количество единичных битов в числе произвольной размерности (вставка на Assembler в Pascal)
Помогите написать программу Подсчитать количество единичных битов в числе произвольной.
Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе.
Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе.
![]()
5869 / 4746 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361

Сообщение было отмечено MerrinZ как решение
Решение
MerrinZ,
1 2 3 4 5 6 7 8
int b = 9; //число int count = 0; //количество бит равных 1 for (int i=0; i8; i++) { if ((b >> i) % 2 == 1) count++; } Console.WriteLine(count);
84 / 85 / 48
Регистрация: 12.10.2013
Сообщений: 1,079
Ув.Даценд, объясните пожалуйста что в C# сие значит :b >> i . Почитал в интернете что в C++ этот << или >> этот оператор это сдвиг на 1 бит.Переписал так для себя:
<>
1 2 3 4 5 6 7 8 9 10 11
int b = 9; //число int count = 0; for (int i=0; i 9; i++) { //if ((b >> i) % 2 == 1) // count++; count = b >> i; Console.Write(count+" "); } // Console.WriteLine(count); Console.ReadLine();
84 / 85 / 48
Регистрация: 12.10.2013
Сообщений: 1,079
Пока нихрена не понял.
.NET senior
440 / 358 / 137
Регистрация: 23.09.2016
Сообщений: 980
Веселый,
влево на 1 бит, эквивалентно умножению числа на 2:
int result = 2 1; // result == 4
соответственно,
>> — сдвиг вправо на 1 бит, эквивалентно делению числа на 2:
int result = 16 >> 1; // result == 8
![]()
5869 / 4746 / 2940
Регистрация: 20.04.2015
Сообщений: 8,361
Веселый,
Да, это сдвиг на один бит вправо.
И, как известно, у четных чисел младший бит равен 0, у нечетных равен 1.
Получая остаток от деления числа на 2 определяем, четное оно или нет.
Если четное, то младший бит равен 0, нечетное 1.
Например:
число 10 (00001010):
итерация 1: 00001010 >> 0 = 00001010, число четное, младший бит равен 0
итерация 2: 00001010 >> 1 = 00000101, число нечетное, младший бит равен 1
итерация 3: 00001010 >> 2 = 00000010, число четное, младший бит равен 0
итерация 4: 00001010 >> 3 = 00000001, число нечетное, младший бит равен 1
итерация 5: 00001010 >> 4 = 00000000, число четное, младший бит равен 0
дальше только 0
Итого 2 единицы.
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Написать функцию, которая для заданного числа Х вычисляет количество единичных битов в этом числе
Написать функцию, которая для заданного числа Х вычисляет количество единичных битов в этом числе.

Функции. побитовые операции. Написать функцию, которая для заданного целого числа Х вычисляет количество единичных битов в этом числе
Здравствуйте, уважаемые мастера программирования. Нуждаюсь в вашей помощи. Написать функцию.
Количество единичных битов
Название Размерность Тип D 16 вход C 5 .
Сосчитать количество единичных битов в АХ
помогите решить. Сосчитать количество единичных битов в АХ. Результат поместить в ВХ.
C как посчитать количество единичных битов
Qraizer, завтра прочитаю, но как я рассуждал — укажу в статье к журналу (надеюсь хватит терпения написать), но в любом случае респект, приятно общаться с теми, для кого смысл важнее копи-паста
Сообщ. #33 , 27.09.08, 04:54

Рейтинг (т): 268
Qraizer
Целое исследование. Однако для длинных данных алгоритм изначально неэффективен (O(n ln n)). Выгоднее разбить длинное «число» на малые элементы и просто складывая числа бит в них получить алгоритм с O(n).
Вдобавок, можно заранее вычислить эти значения.
Добавлено 27.09.08, 04:57
Хотя как пример метапрограммирования очень полезно.
Сообщ. #34 , 27.09.08, 12:11
Рейтинг (т): 134
Qraizer, я по другому рассуждал Есть такая замечательная функция:
num_of_bits = x — (x/2) — (x/4) — (x/8) . — (x/(2^n-1))
В данной задаче, на первом шаге, мы вычисляем восемь двухбитовых слов. Для каждого слова вышеприведенная функция вырождается в:
num_of_bits = x — (x/2)
Для паралельного вычисления восьми слов одновременно обнуляем старшие биты вычитаемого, что позволяет избежать переполнения и приходим к следующей функции:
num_of_bits_8_words = x — ((x/2) & 0x5555)
Вот собственно и все Отказ от масок, на завершающих сложениях, сделан из простых соображений о невозможности переполнений.
PS: Доказательство функции здесь приводить не буду. Во первых, оно очень простое, а во вторых это для статьи.
Добавлено 27.09.08, 12:44
Кстати, вспомнил интересный алгоритм, очень эффективный для чисел с малым содержанием единичных бит:
int NumOfBits (unsigned x) < while (x != 0) < x &= x-1; // сбрасываем крайний справа бит
Здесь изюминка в следующем. Как известно, отнимая от числа единицу мы обнуляем крайний справа бит числа, например для числа 10011000 мы получим 10010xxx. Применив полученное число как маску к исходному, операцией &, мы обнулим крайний справа бит числа. Таким образом цикл будет выполняться столько раз, сколько единичных бит находится в числе Экономия налицо.
Как правильно посчитать количество единичных битов числа
![]()
Как посчитать количество единичных битов числа? Самый простой метод решить этот вопрос — это воспользоваться онлайн-калькуляторами, которые способны конвертировать десятичное число в двоичное и посчитать в нем единичные биты. Такой способ подойдет, если необходимо посчитать количество единичных битов у нескольких чисел для каких-то собственных интересов.
Подобная операция часто необходима в программировании, например , чтобы определить количество возникающих ошибок или найти способ , как ускорить программу, проверив ее двоичный код. В таком случае необходимо воспользоваться возможностями языка программирования и написать небольшую программу для поиска единичных битов.
Как посчитать количество единичных битов числа
Посчитать количество единичных битов числа можно разными способами и на разных языках программирования.
Как это делается на С/С++:
#include
using namespace std;
#include
#include
int main ()
bitset byte (string(«1010110001001010»));
cout
cout
return 0;
>
Результат выполнения такой программы будет следующий:
Количество битов в числе, содержащих единицу: 7
Количество битов в числе, содержащих нули: 9
Как можно посчитать количество единичных битов числа на Python при помощи функции bitLenCount():
def bitLenCount(int_type):
length = 0
count = 0
while (int_type):
count += (int_type & 1)
length += 1
int_type >>= 1
return(length, count)
Как можно посчитать единичные биты в Pascal:
program p;
var a, b : integer;
begin
b := 0;
readln (a);
b := b + a mod 2;
write (a mod 2);
a := a div 2;
b := b + a mod 2;
write (a mod 2);
a := a div 2;
b := b + a mod 2;
write (a mod 2);
b := b + a mod 2;
writeln (a mod 2);
writeln (b);
b := 0;
readln (a);
while a <> 0 do
begin
b := b + a mod 2;
a := a div 2;
end;
writeln (b);
end.
Как посчитать количество единичных битов числа на Java:
public int bitCounter(int n)
int counter = 0;
while (n != 0)
counter += n & 1;
n = n >>> 1;
>
return counter;
>
Заключение
Посчитать количество единичных битов можно на разных языках программирования. Мы сегодня описали простые способы, которые применяются на самых популярных языках программирования.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Количество единичных битов
Название Размерность Тип
D 16 вход
C 5 выход
На входе D двоичное число. Спроектировать устройство, подающее на выход C количество единичных бит во входном числе.
Пример:
D: 1000111011011101b
C: 01010b
Очень лагодарна заранее за решение
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе.
Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе.
Написать функцию, которая для заданного числа Х вычисляет количество единичных битов в этом числе
Написать функцию, которая для заданного числа Х вычисляет количество единичных битов в этом числе.

Функции. побитовые операции. Написать функцию, которая для заданного целого числа Х вычисляет количество единичных битов в этом числе
Здравствуйте, уважаемые мастера программирования. Нуждаюсь в вашей помощи. Написать функцию.
Подсчитать количество единичных бит в числе типа double
Как это можно сделать? С целой частью понятно, а с дробной нет. double u; u=555.667; long.
ниначмуроФ
851 / 535 / 110
Регистрация: 12.10.2009
Сообщений: 1,913
устройство спроектировать?
2342 / 498 / 22
Регистрация: 01.04.2009
Сообщений: 2,200
схему из логических элементов, что-ли?
Регистрация: 23.03.2010
Сообщений: 14
Просто объясните мне, как посчитать количество единичных битов в двоичном числе
![]()
![]()
![]()
![]()
12243 / 7373 / 1734
Регистрация: 25.07.2009
Сообщений: 13,521
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
#include #include #include /* возвращает количество установленных битов */ size_t bitsCount(unsigned long val){ size_t i, cnt; for ( i = cnt = 0; i CHAR_BIT * sizeof(long); ++i ) if ( val & 1 ) ++cnt; return cnt; } /* возвращает число в двоичном виде как строку */ char *bin(unsigned long val){ static char buf[CHAR_BIT * sizeof(long) + 1] = { 0 }; char *p; int i; for ( p = buf, i = CHAR_BIT * sizeof(long) - 1; i >= 0; --i ) *p++ = ( val >> i & 1 ) + '0'; return buf; } int main(void) return 0; }