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

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

Войти
Регистрация
Восстановить пароль
 
mr_spec
0 / 0 / 0
Регистрация: 15.06.2013
Сообщений: 26
#1

Как работает & в данном сравнении - C++

01.03.2014, 11:09. Просмотров 276. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
void disp_binary(unsigned u)
{
    register int t;
 
    for(t = 128; t > 0; t = t/2)
        if(u & t) cout<<"1 "; // вот это не понятно
        else cout<<"0 ";
}
Что это за сравнение не могу понять. И почему одна &, а не две и что сравнивается в данном случае
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2014, 11:09
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как работает & в данном сравнении (C++):

Объясните, как в данном примере работает friend - C++
friend bool operator== (const String&amp; firstStr, const String&amp; secondStr); Если писать код без friend, то возникает ошибка: ...

Не верно работает strcmp при сравнении двух слов - C++
Добрый вечер уважаемые программисты! В общем проблема в следующем, надо из файла F1 скопировать все строки в F2 в которых нет повторяющихся...

Как работает & с целыми числами? - C++
Написано сравнение: if (A &amp;&amp; B == 0) -- // -- Допустим, B = 7. Я че то не пойму когда это вообще выполняется :cry:

Не работает gettimeofday(&tv1, &tz); - C++
#include &lt;iostream&gt; //#include &lt;сtime&gt; #include &lt;time.h&gt; #include &lt;windows.h&gt; #include &lt;math.h&gt; using namespace std; const...

Ошибка: multiple definition of `void std::swap<A>(A&amp;, A&amp;) - C++
Хочу специализировать swap для своего класса. Получаю ошибку. Вот код:#ifndef A_H #define A_H #include &lt;string&gt; class A { ...

Что означает в данном случае символ "&"? - C++
Объясните, пожалуйста, что значит символ &amp; в данной строке: boll MyFunction(string MyVar, MyArr&amp; mainVector)

4
Croessmah
Ушел
Эксперт CЭксперт С++
13563 / 7714 / 873
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
01.03.2014, 11:13 #2
& - это побитовое И
если результат u & t не ноль, то cout<<"1 "
Цитата Сообщение от mr_spec Посмотреть сообщение
t = t/2
может лучше сдвиг?
1
mr_spec
0 / 0 / 0
Регистрация: 15.06.2013
Сообщений: 26
01.03.2014, 11:17  [ТС] #3
Цитата Сообщение от Croessmah Посмотреть сообщение
может лучше сдвиг?
Книгу Герберта Шилдта изучаю. У него такой код.
0
Байт
Диссидент
Эксперт C
16825 / 11090 / 1743
Регистрация: 24.12.2010
Сообщений: 21,774
01.03.2014, 12:34 #4
Цитата Сообщение от mr_spec Посмотреть сообщение
u & t
- побитовое И.
Если u=67= 010000112, то именно эта последовательность нулей и единиц выведется.
Когда t=128 =100000002 t&u=0
Когда t=64 =010000002 t&u=1000000 != 0
и т.д.
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
01.03.2014, 12:44 #5
Имхо, лучше так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <limits>
 
void disp_binary(unsigned u)
{
    for(unsigned t = 1 << (sizeof(t)*8-1); t; t >>= 1)
        std::cout << static_cast<bool>(u & t);
    std::cout << std::endl;        
}
 
int main() {
    
    disp_binary(std::numeric_limits<unsigned>::max());
    disp_binary(2863311530U);
    return 0;
}
http://ideone.com/n5RvYr
0
01.03.2014, 12:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2014, 12:44
Привет! Вот еще темы с ответами:

Теория. Почему в данном случае copy() не работает после reserve(), но работает после resize()? - C++
Есть такая функция: void Array::SetStartIndexes(sz3_Arr_t *array) { start_index.reserve(array-&gt;size()); ...

Нюансы синтаксиса: где, как и для чего используется && - C++
Когда применяется ссылка на ссылку? В STL есть классы, конструкторы которых принимают ссылку на ссылку. Попробовал понять для чего они...

Как проверить, принадлежит ли символ заданному диапазону m...n, кроме if (c <= n && c >= m) ? - C++
есть какая-нибудь более короткая запись для проверки, принадлежит ли символ заданному диапазону m...n, кроме if (c &lt;= n &amp;&amp; c &gt;= m) ...

Как работает операция взятия адреса "&"? - C++
В каждой переменной есть адрес,так вот,когда операция взятия адреса берёт адрес,она его копирует?И тогда адрес остаётся в переменной и в...


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

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

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