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

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

Войти
Регистрация
Восстановить пароль
 
Джек
5 / 5 / 0
Регистрация: 16.08.2011
Сообщений: 77
#1

Выход на биты в поразрядных операторах - C++

04.08.2012, 19:31. Просмотров 343. Ответов 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
 #include <iostream.h>
 #include <conio.h>
 
#pragma argsused
 void Bits(unsigned);
 int main()
 {unsigned x;
 cout<<"celoe bez znaka: ";
 cin>>x;
 Bits(x);
         return 0;
 }
 void Bits(unsigned x)
 {const unsigned s=8*sizeof(unsigned)-1;
 const unsigned mask=1<< s; 
 cout<<setw(7)<<x<<"=";
 for(unsigned i=1;i<=s+1;i++)
 {cout<<(x & mask ? '1':'0');
 x<<=1; 
 if(i%8==0)
 cout<<' ';
 }
 cout<<endl;
 getch();
 }
 //---------------------------------------------------------------------------
Вопрос вот в чем:

const unsigned s=8*sizeof(unsigned)-1; //как я понял один байт это 8 битов но почему есть -1, может ли бить другое число на месте 8-ки.


const unsigned mask=1<< s; //почему здесь есть сдвиг и зачем он нужен, и что выполняет переход к битам


x<<=1; //зачем опять сдвиг, 1 и знак =
if(i%8==0) //зачем нужно вычисление остатка здесь и проверка равно 0.

Заранее спасибо всем за ответы!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2012, 19:31     Выход на биты в поразрядных операторах
Посмотрите здесь:

операторы ввода и вывода, форматы используемые в этих операторах {c++} C++
C++ Найдите ошибки в операторах ввода/вывода
Нужно ли писать 'this' в операторах C++
C++ Синтаксис в операторах while и do while
C++ Вычисление значения логического выражения, состоящего из натуральных чисел, скобок и поразрядных операций
Множественные char условия в условных операторах C++
C++ Путаница в операторах
C++ Какие ограничения накладываются на объявления в операторах
Есть ли ошибка в операторах C++
Подскажите в условных операторах C++
C++ Где почитать про перегрузку поразрядных логических операций (|, &, ^)
ошибка в условных операторах C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5413 / 1796 / 327
Регистрация: 10.12.2010
Сообщений: 5,305
Записей в блоге: 3
05.08.2012, 16:09     Выход на биты в поразрядных операторах #2
Цитата Сообщение от Джек Посмотреть сообщение
const unsigned s=8*sizeof(unsigned)-1; //как я понял один байт это 8 битов но почему есть -1, может ли бить другое число на месте 8-ки.
sizeof(unsigned)=sizeof(unsigned int)=4 байта. Таким образом в константе будет лежать значение, равное 8*4-1=31
И по хорошему, вам стоит прочитать о побитовых операциях и с чем их едят.
Yandex
Объявления
05.08.2012, 16:09     Выход на биты в поразрядных операторах
Ответ Создать тему
Опции темы

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