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

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

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

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

01.03.2014, 11:09. Просмотров 223. Ответов 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 ";
}
Что это за сравнение не могу понять. И почему одна &, а не две и что сравнивается в данном случае
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2014, 11:09     Как работает & в данном сравнении
Посмотрите здесь:

Объясните, как в данном примере работает friend C++
Как найти длину наименьшей строки в данном массиве ? C++
C++ Объясните, как в данном примере работают виртуальные функции?
C++ Как происходит сортировка в данном блоке?
Ошибка в сравнении символов C++
C++ Объясните на данном примере как работать с композицией
Как правильно вызвать конструктор вектора в данном случае? C++
Не верно работает strcmp при сравнении двух слов C++
Как работает операция взятия адреса "&"? C++
Как в данном контексте правильно разместить статическую локальную переменную? C++
C++ Как работает & с целыми числами?
Побитовые операции: как работает этот сдвиг вправо и логическое "И"(&) ? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
01.03.2014, 11:13     Как работает & в данном сравнении #2
& - это побитовое И
если результат u & t не ноль, то cout<<"1 "
Цитата Сообщение от mr_spec Посмотреть сообщение
t = t/2
может лучше сдвиг?
mr_spec
0 / 0 / 0
Регистрация: 15.06.2013
Сообщений: 26
01.03.2014, 11:17  [ТС]     Как работает & в данном сравнении #3
Цитата Сообщение от Croessmah Посмотреть сообщение
может лучше сдвиг?
Книгу Герберта Шилдта изучаю. У него такой код.
Байт
Эксперт C
 Аватар для Байт
15081 / 9483 / 1391
Регистрация: 24.12.2010
Сообщений: 17,561
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
и т.д.
Tulosba
:)
Эксперт С++
4384 / 3227 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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
Yandex
Объявления
01.03.2014, 12:44     Как работает & в данном сравнении
Ответ Создать тему
Опции темы

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