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

Помгите пожалуйста разобраться с программой, на бинарные операции - C++

Восстановить пароль Регистрация
 
Ирина123
0 / 0 / 0
Регистрация: 29.06.2011
Сообщений: 28
22.10.2011, 15:42     Помгите пожалуйста разобраться с программой, на бинарные операции #1
Задача звучит таким образом: найти корень числа, введенного пользователем, используя ТОЛЬКО побитовые оперции. По алгоритму:
например, введенно число 25, тогда программа должна вычилять корень так:
25
- 1
24
- 3
21
- 5
16
- 7
9
- 9
0

1-е целое нечетное число;

то есть вычитать из числа каждый раз числа от 1 и далее все нечетные числа по порядку, пока не будет нуль. А корень будет равен 5, то есть количеству вычтенных чисел из числа 25, как в примере. Вот код, помогите пожалуйста разобраться какой цикл для чего работает, и с построчными комментариями..
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <stdlib.h>
using namespace std;
int Binary(int);
int N,i,j=0;
int BinarySum(int, int);
int x,y,h=0;
void main()
{
int X,G=0,A=0,b=-1;
 
cout<<"Input number X:";
cin>>X;
N=15;
do
{
b++;
j=2*b+1;
cout<<j<<" ";
for (i=0; i<=N; i++)
{
x=(Binary(j)^1);
y=Binary(1);
if (BinarySum(x,y)) G=G|32768; else G=G|0;
if (i<N) G>>=1;
}
cout<<"\n";
for (i=0; i<=N; i++)
{
x=Binary(G);
y=Binary(X);
if (BinarySum(x,y)) A=A|32768; else A=A|0;
if (i<N) A>>=1;
}
for (i=0; i<=N; i++)
{
x=Binary(A);
cout<<x;
}
cout<<"\n";
X=A;
cout<<"\n";
A=0;
G=0;
h=0;
} while (X-(2*(b+1)+1)>=0);
 
if (X!=0) cout<<"Kornya net"; else cout<<"\n"<<"Kvadratn koren:"<<b+1;
system("pause");
}
 
int Binary(int A)
{
int k;
k=((A>>i)&1);
return k;
}
int BinarySum(int x, int y)
{
int s;
s=((x^y)^h);
if ((x)&&(y)) h=1;
if ((!x) && (!y)) h=0;
return s;
 
}
Особенно вот такие моменты как "G=G|32768; else G=G|0;
", непонятны
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2011, 15:42     Помгите пожалуйста разобраться с программой, на бинарные операции
Посмотрите здесь:

C++ Помогите разобраться с программой.
C++ Помогите, пожалуйста, разобраться с программой. двумерные массивы
C++ Нужно разобраться с программой
C++ помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n))
Помочь разобраться с программой. Написать функцию вставки элемента в массив C++
Не могу разобраться с программой C++
C++ Не могу разобраться с программой в С++
Почему в с++ бинарные операции должны перегружаться внешними функциями? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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