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

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

Восстановить пароль Регистрация
 
Джек
5 / 5 / 0
Регистрация: 16.08.2011
Сообщений: 77
04.08.2012, 19:31     Выход на биты в поразрядных операторах #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++
Нужно ли писать 'this' в операторах C++
C++ синтаксис в операторах while и do while
C++ Вычисление значения логического выражения, состоящего из натуральных чисел, скобок и поразрядных операций
C++ Путаница в операторах
Есть ли ошибка в операторах C++
C++ Где почитать про перегрузку поразрядных логических операций (|, &, ^)
C++ Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
HighPredator
 Аватар для HighPredator
5352 / 1735 / 320
Регистрация: 10.12.2010
Сообщений: 5,120
Записей в блоге: 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     Выход на биты в поразрядных операторах
Ответ Создать тему
Опции темы

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