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

Проясните код. Побитовое увелечение/уменьшение на 1 - C++

Восстановить пароль Регистрация
 
Ion01
0 / 0 / 0
Регистрация: 27.01.2013
Сообщений: 18
31.01.2013, 00:56     Проясните код. Побитовое увелечение/уменьшение на 1 #1
Вот пример кода. Вы можете объяснить мне как он работает.
Я понимаю, что 16 это 10000 в двоичной системе.
Код легкий, но я не могу понять как происходит увеличение/уменьшение.

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
// lab 2.7.1v.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
 
 
int _tmain(int argc, _TCHAR* argv[])
{
// побитовое увеличение на 1
int a = 16;
int res1;
int i = 0;
res1 = a;
int c;
c = (a&(1<<i))>>i;
while ((c!=0)&&(i<31))
{
    res1 = (res1^(1<<i));
    i++;
    c = (a&(1<<i))>>i;
}
res1 = (res1^(1<<i));
// побитовое уменьшение на 1
a = 60; // новое значение а
int res2;
int d;
i = 0; // обнулим счетчик
res2 = a;
d = (a&(1<<i))>>i;
while ((d!=1)&&(i<31))
{
    res2 = (res2^(1<<i));
    i++;
    d = (a&(1<<i))>>i;
}
res2 = (res2^(1<<i));
 
//побитовое сравнение двух чисел, проверка на ==
int a1 = 100;
int a2 = 100;
int c1;
int c2;
int res3 = 0;
i = 31; //счетчик = 31
while ((i >= 0) && (res3 == 0)) //рабочает пока не пройдем 0 бит, или проверим условие ==
{
c1 = (a1&(1<<i))>>i;
c2 = (a2&(1<<i))>>i;
i--;
res3 = c1-c2;// если res3 = 0, числа равные; res3 = 1, с1 - больше с2, res3 = -1, с2 - больше с1 
}
 
    return 0;
}
Добавлено через 7 часов 28 минут
Я понял. Детально проработаю эту тему, потом самостоятельно напишу пояснение данных побитовых операций.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2013, 00:56     Проясните код. Побитовое увелечение/уменьшение на 1
Посмотрите здесь:

Увелечение размера динамического массива C++
C++ побитовое увеличение
C++ проясните вопрос в строках
C++ Побитовое чтение
Проясните освобождение памяти C++
Побитовое вычитание C++
Найти все натуральные N-значения числа,цифры в которых делают сторого увелечение последовательности(234) C++
Проясните ситуацию с пространствами имен C++

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

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

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