Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

04.08.2012, 19:31. Просмотров 361. Ответов 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.

Заранее спасибо всем за ответы!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.08.2012, 19:31
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выход на биты в поразрядных операторах (C++):

Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат - C++
нужна помощь в битовых операциях.Ввести целое число A. Инвертировать все биты с 4 по 8, включая эти биты. Вывести результат.

... В четных байтах числа в двоичной системе переместить нулевые биты в старшие биты, а в нечетных байтах – в младшие ... - C++
Доброго времени суток всем, столкнулся с проблемой по С++,требуется написать программу: которая получает 1)случайное целое типа int,...

Использование поразрядных операций - C++
Здравствуйте! поразрядные операции отказываются работать в моей системе. Что нужно сделать, чтобы они перестали сопротивляться?

Программирование поразрядных операций - C++
Здравствуйте, у меня есть следующее задание: &quot;Составить две программы, первая из которых вводит составные части структуры данных,...

Где почитать про перегрузку поразрядных логических операций (|, &, ^) - C++
Здравствуйте. Подскажите пособие, где как можно подробно описывается перегрузка поразрядных логических операций (|, &amp;, ^).

Вычисление значения логического выражения, состоящего из натуральных чисел, скобок и поразрядных операций - C++
Дорогие друзья, помогите написать программу, не могу понять как и даже с чего начать. Можете дать, пожалуйста, код и написать в...

1
HighPredator
5545 / 1858 / 346
Регистрация: 10.12.2010
Сообщений: 5,443
Записей в блоге: 2
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
И по хорошему, вам стоит прочитать о побитовых операциях и с чем их едят.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2012, 16:09
Привет! Вот еще темы с ответами:

Путаница в операторах - C++
Что же возвращает 6-ая строка? BOOL String::Invariants() const { #ifdef SHOW_INVARIANTS cout &lt;&lt; &quot;Invariants Tested&quot; &lt;&lt; endl; ...

Синтаксис в операторах while и do while - C++
Всем драсте потихоньку балуюсь с++ мозг плавится слишком уж придирчивый язык к синтаксису,выкладываю мою писанину, вопрос собственно по...

Нужно ли писать 'this' в операторах - C++
Нужно ли писать 'this' в операторах типа this-&gt;Edit1-&gt;Text = 'qqq' и чем отличается выполнение подобного оператора с 'this' и без него

Подскажите в условных операторах - C++
подскажите пожалуйста Даны три вещественных числа. Вывести на экран: а) те из них, которые принадлежат интервалу (а-b), б)те из них,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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