23.11.2011, 18:00. Просмотров 538. Ответов 1
Даны два int-числа: N1 = ABCD и N2 = EFGH, где AB…GH – 16 – ричные цифры. Образовать long-число DE
GHDABF, используя только поразрядные операции. В подчеркнутых цифрах вычислить количество битов ‘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 в подчеркнутом числе?