Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2009, 17:02   #1
slon_slon_slon
 
Регистрация: 11.10.2009
Сообщений: 3
По умолчанию как побитово разбить двоичное число?

необходимо разбить число 10001101 на отдельные биты и записать их в отдельные переменные.

как это сделать в языке С? что делать с отсутствующим булевым типом? просто использовать тип short и сравнивать с 1 или 0?
slon_slon_slon вне форума Ответить с цитированием
Старый 08.11.2009, 17:07   #2
zdovim
Новичок
Джуниор
 
Регистрация: 05.11.2009
Сообщений: 9
По умолчанию

Использовать коньюнкцию & с побитовой маской.
Если хочешь получить самый первый бит (правый) - то маска будет 0x1 (если 32 битные числа).
Если второй - 0x2 и так далее.

if( value & 0x1 ) {
// 0 bit == 1
} else {
// 0 bit == 0
}

и так для всех битов.

Последний раз редактировалось zdovim; 08.11.2009 в 17:10.
zdovim вне форума Ответить с цитированием
Старый 08.11.2009, 19:49   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Можно использовать битовые поля. Как пример:

Код:
#include <iostream>
using namespace std;

union UN
 {
  unsigned short int value;
  struct
   {
    unsigned short int b0 : 1;
    unsigned short int b1 : 1;
    unsigned short int b2 : 1;
    unsigned short int b3 : 1;
    unsigned short int b4 : 1;
    unsigned short int b5 : 1;
    unsigned short int b6 : 1;
    unsigned short int b7 : 1;   
   };
 };

void printbits(const UN a)
{
 cout<<a.b7<<a.b6<<a.b5<<a.b4<<a.b3<<a.b2<<a.b1<<a.b0<<endl;
} 

int main(int argc, char *argv[])
{
UN a;
a.value = 4;
printbits(a);

cin.get();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 08.11.2009, 20:35   #4
slon_slon_slon
 
Регистрация: 11.10.2009
Сообщений: 3
По умолчанию

спасибо!

может кстати их в маасивчик загнать просто?
slon_slon_slon вне форума Ответить с цитированием
Старый 08.11.2009, 21:07   #5
SnX
Форумчанин
 
Регистрация: 30.10.2009
Сообщений: 114
По умолчанию

Код:
unsigned char bits[8];
char value=77;
...
for (int i=7; i>=0; bits[i--]=value & 1, value>>=1);
...
SnX вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбить ячейку на буквы и присвоить каждой букве число Apostolx Microsoft Office Excel 8 10.02.2012 10:17
С++ : Как разбить целое число на составляющие? Maruff Помощь студентам 6 17.06.2009 16:00
двоичное число→десятичное astrozombie Паскаль, Turbo Pascal, PascalABC.NET 4 06.05.2009 08:32
Как разбить число на массив? recond Общие вопросы C/C++ 15 03.02.2009 00:36
Как разбить число по числам? maxim_ov Microsoft Office Excel 3 04.08.2008 16:23