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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.80
Wladius
12 / 7 / 2
Регистрация: 06.01.2013
Сообщений: 127
#1

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

23.06.2013, 20:25. Просмотров 3033. Ответов 5
Метки нет (Все метки)

Именно пи помощи побитовых операций, остальными способами я и сам могу реализовать, но мне хочется понять как работают все эти побитовые операции, понять их, так что если не сложно напиши пожалуйста пояснения к программе или объяснение как в принципе это делается.

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

Побитовые операции для преобразования в двоичную, восьмеричную и шестнадцатиричную системы исчисления - C++
прощу помощи с написанием след.программы: Используя только побитовые операторы представить число, которое вводит пользователь в...

Перевод в двоичную систему - C++
Есть такой рабочий код #include <iostream> #include <locale.h> using namespace std; int main(void) { setlocale(LC_ALL,...

Перевод в двоичную систему счисления - C++
Пожалуйста, помогите с задачкой. Даны два числа a, b их нужно сперва перевести в двоичную систему счисления (сами они из десятичной), а...

Перевод числа в двоичную систему - C++
Скажите , что не так в коде? Перевод в 2ичную систему счисления . Получается бесконечным int main() { ...

Перевод с десятичной в двоичную систему - C++
Здравствуйте,нужно написать програму (только чистый Borland C), которая переводит числа из десятичных в двоичные..!

Перевод числа в двоичную систему - C++
Каким циклом можно перевести число из десятичной в двоичную и присвоить переменной это число? Например из чисел 1, 2, 3 получить 01,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Thinker
Эксперт C++
4225 / 2199 / 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++
4225 / 2199 / 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++
4225 / 2199 / 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.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.06.2013, 21:22
Привет! Вот еще темы с ответами:

Перевод из десятичной в двоичную систему - C++
нужно перевести число из десятичной в двоичную систему! На форуме искал но не подходит! Вот мое творение #include &lt;iostream&gt; using...

Перевод числа из десятичною в двоичную систему - C++
Надо перевести числа в двоичною систему, я уже делал в Python такое ,там bin(8) и получал нужное, есть ли что такое в С++ я искал тут на...

Перевод из восьмеричной в двоичную систему счисления - C++
Нужно реализовать перевод числа из восьмеричной в двоичную систему счисления. Не используя cin, cout, не стандартные функции. Была идея...

Перевод чисел в двоичную систему счисления - C++
Помогите найти ошибку : #include&lt;iostream&gt; using namespace std; #include&lt;conio.h&gt; void inp(int n, int k=0, int i=0) { ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.06.2013, 21:22
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru