Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.94
Filipchik Elena
0 / 0 / 0
Регистрация: 23.03.2010
Сообщений: 14
#1

Количество единичных битов - C++

23.03.2010, 19:21. Просмотров 4215. Ответов 9
Метки нет (Все метки)

Название Размерность Тип
D 16 вход
C 5 выход
На входе D двоичное число. Спроектировать устройство, подающее на выход C количество единичных бит во входном числе.

Пример:
D: 1000111011011101b
C: 01010b
Очень лагодарна заранее за решение
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2010, 19:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Количество единичных битов (C++):

Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе. - C++
Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе. Проблема состоит в том, что все время...

Написать функцию, которая для заданного числа Х вычисляет количество единичных битов в этом числе - C++
Написать функцию, которая для заданного числа Х вычисляет количество единичных битов в этом числе, используя побитовые операции и функции...

Функции. побитовые операции. Написать функцию, которая для заданного целого числа Х вычисляет количество единичных битов в этом числе - C++
Здравствуйте, уважаемые мастера программирования. Нуждаюсь в вашей помощи. Написать функцию, которая для заданного целого числа Х...

Подсчитать количество единичных бит в числе типа double - C++
Как это можно сделать? С целой частью понятно, а с дробной нет. double u; u=555.667; long c=u;//555 int count; unsigned mask...

Подсчетать количество единичных разрядов на нечетных местах в двоичном представлении числа - C++
4. Записать программу для подсчета количества единичных разрядов на нечетных местах в двоичном представлении заданного целого числа (...

Задача Robot. Найти количество единичных квадратов, на которых робот побывал более одного раза - C++
Задача Robot. Робот находится на плоскости, которая разбита на единичные квадраты. Робот может двигаться в четырех направлениях на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
PointsEqual
ниначмуроФ
836 / 520 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
23.03.2010, 19:22 #2
устройство спроектировать?
0
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
23.03.2010, 19:36 #3
схему из логических элементов, что-ли?
0
Filipchik Elena
0 / 0 / 0
Регистрация: 23.03.2010
Сообщений: 14
24.03.2010, 15:34  [ТС] #4
Просто объясните мне, как посчитать количество единичных битов в двоичном числе
0
easybudda
Модератор
Эксперт CЭксперт С++
9632 / 5580 / 948
Регистрация: 25.07.2009
Сообщений: 10,714
24.03.2010, 16:02 #5
C
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 <stdio.h>
#include <limits.h>
#include <windows.h>
 
/* возвращает количество установленных битов */ 
size_t bitsCount(unsigned long val){
    size_t i, cnt;
    for ( i = cnt = 0; i < CHAR_BIT * sizeof(long); ++i )
        if ( val & 1 << i )
            ++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){
    unsigned long val;
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    while ( 1 ){
        printf("Число (0 - выход): ");
        if ( scanf("%lu", &val) != 1 || !val )
            break;
        printf("В двоичном виде: %s\n", bin(val));
        printf("Установленных битов: %d\n", bitsCount(val));
    }
    return 0;
}
0
fasked
Эксперт С++
4937 / 2517 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
24.03.2010, 16:20 #6
для unsigned int
C++
1
2
3
4
5
6
7
8
9
10
// Подсчет еденичных битов в слове
int wpop(WORD32 X)
{
    X = X - ((X >> 1) & 0x55555555);
    X = (X & 0x33333333) + ((X >> 2) & 0x33333333);
    X = (X + (X >> 4)) & 0x0F0F0F0F;
    X = X + (X >> 8);
    X = X + (X >> 16);
    return (X & 0x0000003F);
}
1
odip
Эксперт С++
7157 / 3297 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
25.03.2010, 12:35 #7
А откуда эта формула ?
0
Patch
2276 / 491 / 11
Регистрация: 01.04.2009
Сообщений: 2,178
25.03.2010, 13:57 #8
Цитата Сообщение от odip Посмотреть сообщение
А откуда эта формула ?
из основ электроники, вероятно.
я не зря спрашивал, уж не логическую ли схему надо автору.
в шифраторах как раз такие алгоритмы и применяются.
там и еще интереснее есть, для генерации контрольных битов, позволяющие находит и восстанавливать единичные ошибки.
0
fasked
Эксперт С++
4937 / 2517 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
25.03.2010, 15:12 #9
Цитата Сообщение от Patch Посмотреть сообщение
позволяющие находит и восстанавливать единичные ошибки.
Это называется помехоустойчивое кодирование =)
0
Filipchik Elena
0 / 0 / 0
Регистрация: 23.03.2010
Сообщений: 14
25.03.2010, 19:13  [ТС] #10
СПАСИБО!!!!!!!!!!!!!!!!!!!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2010, 19:13
Привет! Вот еще темы с ответами:

Количество нулевых битов - C++
in1 4бита in2 4бита out1 1бит out2 1бит out3 1бит На входе два двоичных числа: in1,in2. Определить количество...

Перевод таблицы битов и времени в последовательность битов arduino - C++
доброго времени суток в приведенной ниже таблице левый столбец - биты, правый - их длительность. известно, что единичный сигнал длится от...

Программа, которая считает количество битов. - C++
Привет всем, нужно написать функцию, которая возвращает количество битов с значением '1' в числе типу short. Заранее спасибо.

Найти количество нулевых битов в последовательности - C++
Добрый день, я пишу программу, находящую количество нулевых битов в последовательности. Получается как int x; scanf_s(&quot;%d&quot;, &amp;x); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.03.2010, 19:13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru