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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
shocoladka
7 / 7 / 0
Регистрация: 02.12.2010
Сообщений: 71
#1

Boolean - C++

12.02.2011, 22:30. Просмотров 2219. Ответов 7
Метки нет (Все метки)

Не подскажите почему булеану выделяется 1 байт(8 бит) ведь достаточно только одного бита. И как тогда работать побитово?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.02.2011, 22:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Boolean (C++):

на C++, Boolean - C++
Даны числа A, B, C (число A не равно 0). Рассмотрев дискриминант D = B2 – 4·A·C, проверить истинность высказывания: «Квадратное уравнение...

Массив типа boolean - C++
int main(int argc, char** argv) { bool A; return 0; } Такой массив будет заполнен 1 и 0??

Свой тип Boolean - C++
хз зачем я это написал просто скучно было :D enum Boolean_t { False, True }; struct Boolean { Boolean_t value; Boolean()...

Перебор числа в 2ичной системе, используя boolean - C++
Итак, изначально есть массив из boolean, допустим 000000 Надо произвести перебор, как если бы это было число в 2ичной системе вот так...

Доказать (перебор) что для любых величин А, В, С типа Boolean следующие пары логических выражений эквивалентны - C++
Доказать (путем перебора возможных значений), что для любых величин А, В, С типа Boolean следующие пары логических выражений имеют...

В чем разница между boolean и Boolean - Java SE
В чем разница между boolean и Boolean

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
slavich
12 / 12 / 1
Регистрация: 25.10.2009
Сообщений: 32
12.02.2011, 23:32 #2
выделяется байт, т.к. с ним проще работать.Побитово можно работать с помощью операций &,|,^.
1
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
13.02.2011, 00:44 #3
Я бы уточнил - доступ ко всему байту происходит быстрее, поскольку чтобы произвести доступ к биту, надо его сначала из байта выделить из бита (т.е. если бы всё это делалось автоматически, то программист бы этого не замечал, но эти дополнительные операции всё равно производились бы).
0
shocoladka
7 / 7 / 0
Регистрация: 02.12.2010
Сообщений: 71
14.02.2011, 19:26  [ТС] #4
И все же можно ли как то работать с битами на с++?(Если можно то как)
Всмысле хранить там информацию(например создать булеву матрицу побитово)
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
14.02.2011, 19:28 #5
shocoladka, читайте про операции побитового сдвига (<<, >>)
1
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
14.02.2011, 19:43 #6
Цитата Сообщение от shocoladka Посмотреть сообщение
И все же можно ли как то работать с битами на с++?(Если можно то как)
Всмысле хранить там информацию(например создать булеву матрицу побитово)
std::vector<bool> хранит побитово, но его не очень рекомендуют использовать. Можно воспользоваться std::bitset (тоже побитово хранит).
1
easybudda
Модератор
Эксперт CЭксперт С++
9624 / 5572 / 946
Регистрация: 25.07.2009
Сообщений: 10,702
14.02.2011, 20:35 #7
вот ещё пример работы с битами
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
27
28
29
30
31
32
#include <iostream>
#include <string>
 
enum Status { STILL_ALIVE = 0, BULLET_IN_THE_HEAD = 1, KNIFE_IN_THE_HEART = 2, POISON_IN_THE_STOMACH = 4 };
 
struct Person {
    std::string name;
    int status;
    Person(std::string n, int s): name(n), status(s){}
};
 
int main(){
    Person p("Vasya", STILL_ALIVE);
    
    p.status |= BULLET_IN_THE_HEAD | POISON_IN_THE_STOMACH;
    
    if ( p.status == STILL_ALIVE ){
        std::cout << p.name << " is still alive." << std::endl;
    }
    else {
        std::cout << p.name << " have ";
        if ( p.status & BULLET_IN_THE_HEAD )
            std::cout << "bullet in the head ";
        if ( p.status & KNIFE_IN_THE_HEART )
            std::cout << "knife in the heart ";
        if ( p.status & POISON_IN_THE_STOMACH )
            std::cout << "poison in the stomach ";
        std::cout << "\b. Because of it " << p.name << " is dead." << std::endl;
    }
    
    return 0; 
}
мрачновато, правда, как-то получилось...
1
shocoladka
7 / 7 / 0
Регистрация: 02.12.2010
Сообщений: 71
16.02.2011, 20:35  [ТС] #8
Цитата Сообщение от easybudda Посмотреть сообщение
вот ещё пример работы с битами
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
27
28
29
30
31
32
#include <iostream>
#include <string>
 
enum Status { STILL_ALIVE = 0, BULLET_IN_THE_HEAD = 1, KNIFE_IN_THE_HEART = 2, POISON_IN_THE_STOMACH = 4 };
 
struct Person {
    std::string name;
    int status;
    Person(std::string n, int s): name(n), status(s){}
};
 
int main(){
    Person p("Vasya", STILL_ALIVE);
    
    p.status |= BULLET_IN_THE_HEAD | POISON_IN_THE_STOMACH;
    
    if ( p.status == STILL_ALIVE ){
        std::cout << p.name << " is still alive." << std::endl;
    }
    else {
        std::cout << p.name << " have ";
        if ( p.status & BULLET_IN_THE_HEAD )
            std::cout << "bullet in the head ";
        if ( p.status & KNIFE_IN_THE_HEART )
            std::cout << "knife in the heart ";
        if ( p.status & POISON_IN_THE_STOMACH )
            std::cout << "poison in the stomach ";
        std::cout << "\b. Because of it " << p.name << " is dead." << std::endl;
    }
    
    return 0; 
}
мрачновато, правда, как-то получилось...
Ну это конечно не совсем то что мне надо было)

Добавлено через 22 часа 36 минут
А вы не подскажите почему когда я изменяю значение STILL_ALIVE результат работы программы изменяется??
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.02.2011, 20:35
Привет! Вот еще темы с ответами:

boolean - Java SE
Допрограмиировался до того, что не могу разобраться с элементарным. Подскажите, пожалуйста... Объясните мне пожалуйста запись ...

Boolean - Java SE
package tajriba; import java.util.*; public class tajriba1{ public static void main(String args){ Scanner ah = new Scanner...

Boolean=-1? - Delphi
Доброго времени суток, возникла такая ситуация: Записываю в ini файл значения, проверяю файл все в норме, начинаю считывать значения с...

Boolean - Pascal
Навести фрагмент программного кода для проверки или есть в строке St последовательность букв &quot;end&quot;, если есть - переменной А присвоить...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.02.2011, 20:35
Ответ Создать тему
Опции темы

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