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

Поразрядные операции - C++

Восстановить пароль Регистрация
 
mrd
1 / 0 / 0
Регистрация: 05.10.2010
Сообщений: 22
23.11.2011, 18:00     Поразрядные операции #1
Даны два int-числа: N1 = ABCD и N2 = EFGH, где AB…GH – 16 – ричные цифры. Образовать long-число DEGHDABF, используя только поразрядные операции. В подчеркнутых цифрах вычислить количество битов ‘1’.
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
long num(int n1, int n2);
 
int main()
{
        int n1, n2;
        long n;
        printf("Input two numbers n1 and n2: \t");
        scanf("%x%x", &n1, &n2);
        n = num(n1, n2);
        printf("n = %lx\n", n);
        getch();
        return 0;
}
 
long num(int n1, int n2)
{
        long n=0x0, AB, D, E, GH, F;
        AB = (n1 >> 8) & 0xFF;
        D = n1 & 0xF;
        E = (n2 >> 12) & 0xF;
        F = (n2 >> 8) & 0xF ;
        GH = (n2 & 0xFF);
        n = n | (D << 4*7);
        n = n | (E << 4*6);
        n = n | (GH << 4*4);
        n = n | (D << 4*3);
        n = n | (AB << 4);
        n = n | F;
        return n;
}
Число я нашел. Как посчитать количество битов = 1 в подчеркнутом числе?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2011, 18:00     Поразрядные операции
Посмотрите здесь:

Поразрядные операции C++
поразрядные операции C++
поразрядные операции C++
C++ Поразрядные операции
C++ Поразрядные операции
Поразрядные операции C++
C++ Поразрядные операции
Поразрядные операции C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
23.11.2011, 18:16     Поразрядные операции #2
вес числа находится так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
int w(int n) {
 
int c=0;
while (n) {
 
if (n&1)
c++;
 
n>>=1;
}
 
return c;
}
Yandex
Объявления
23.11.2011, 18:16     Поразрядные операции
Ответ Создать тему
Опции темы

Текущее время: 21:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru