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

Побитовые операции: Перевод в двоичную систему - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.80
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
23.06.2013, 20:25     Побитовые операции: Перевод в двоичную систему #1
Именно пи помощи побитовых операций, остальными способами я и сам могу реализовать, но мне хочется понять как работают все эти побитовые операции, понять их, так что если не сложно напиши пожалуйста пояснения к программе или объяснение как в принципе это делается.

Добавлено через 32 минуты
up.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.06.2013, 20:25     Побитовые операции: Перевод в двоичную систему
Посмотрите здесь:

перевод в двоичную систему через классы C++
Перевод с десятичной в двоичную систему C++
Перевод числа в двоичную систему C++
Перевод в двоичную систему C++
C++ Перевод в двоичную систему счисления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.06.2013, 20:29     Побитовые операции: Перевод в двоичную систему #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
void Print(unsigned a)
{
   if (a)
   {
       Print(a >> 1);
       std::cout << (a & 1);
   }
}
int main()
{
   Print(123);
   return 0;
}
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
23.06.2013, 20:55  [ТС]     Побитовые операции: Перевод в двоичную систему #3
@Thinker, спасибо, после вашего примера наконец-то сам понял, что все это значит и почему работает, по сути а>>1 это деление на два, а а>>2 это деление на 4 (то есть это как бы 2^2, a>>3 это деление на 8 то есть 2^3)
И по сути это почти то же самое, что перевод делением, только вот не совсем понял как себя ведет &, думаю это как-то связано с последним битом в двоичном представлении числа, то есть четные числа заканчиваются на 0 и эта операция выдает 0, а нечетные заканчиваются на 1 и выдает 1.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.06.2013, 20:59     Побитовые операции: Перевод в двоичную систему #4
Цитата Сообщение от Wladius Посмотреть сообщение
не совсем понял как себя ведет &, думаю это как-то связано с последним битом в двоичном представлении числа, то есть четные числа заканчиваются на 0 и эта операция выдает 0, а нечетные заканчиваются на 1 и выдает 1.
в данном случае да, выделяем последний бит с помощью конструкции a & 1.
a & 3 - выделяет 2 бита,
a & 7 - выделяет 3 бита
и т.д.
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
23.06.2013, 21:18  [ТС]     Побитовые операции: Перевод в двоичную систему #5
Цитата Сообщение от Thinker Посмотреть сообщение
в данном случае да, выделяем последний бит с помощью конструкции a & 1.
a & 3 - выделяет 2 бита,
a & 7 - выделяет 3 бита
и т.д.
Вот это уже не получается понять, вот например а=9
a&1 = 1
a&2 = 0
a&3 = 1
a&4 = 0
a&7 = 1

9 в двоичном представлении выглядит 1001
Объясните пожалуйста на этом примере какие биты выделяет a&2, 3, 4 итд
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
23.06.2013, 21:22     Побитовые операции: Перевод в двоичную систему #6
9 = 1001,
1 = 0001

1001
&
0001
=
0001,
поэтому 9 & 1 = 1.

2 = 0010
1001
&
0010
=
0000,
поэтому 9 & 2 = 0.

3 = 0011
1001
&
0011
=
0001,
поэтому 9 & 3 = 1.

15 = 1111
1001
&
1111
=
1001,
поэтому 9 & 15 = 9.
Yandex
Объявления
23.06.2013, 21:22     Побитовые операции: Перевод в двоичную систему
Ответ Создать тему
Опции темы

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