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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2010, 10:15   #1
Александе еть я
Пользователь
 
Регистрация: 18.10.2009
Сообщений: 29
По умолчанию побитовые операции

я написал функцию,которая отображает числа в двоичном представление,например 1 это 0000 0000 0000 0001.

но она не работает если числа отрицательные.подскажите в чем у меня ошибка

вот мой код:
void show(int x)
{
int cont=0x7FFF;
for (int i=16;i!=0;i--)
{
if (i%4==0)
cout<<" ";
if ((x&cont)==x)
cout<<"0";
else
cout<<"1";
cont>>=1;
if ((cont&0x7FFF)==cont)
cont+=0x8000;
}
}
Александе еть я вне форума Ответить с цитированием
Старый 18.04.2010, 11:08   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

не парься, пользуйся битсетом
Код:
#include <bitset>
....
void show(int x) {
    cout << bitset<16>(x) << endl; // 16 - кол-во бит
}
NiCola999 вне форума Ответить с цитированием
Старый 18.04.2010, 13:31   #3
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Использовать контейнер только для вывода сурово как-то ))
Немного изменил вашу ф-цию
Код:
void outputBin(int x, int bitcount)
{
	unsigned int bit;

	if(bitcount > sizeof(x) * 8) // отлов случая, когда запрашивается вывод большего кол-ва бит, чем есть
		bitcount = sizeof(x) * 8;

	bit = 1 << (bitcount - 1);
	for(int i = 1; i <= bitcount; i++, bit >>= 1) {
		std::cout << ((bit & x) ? '1' : '0');
		if( i % 4 == 0 )
			std::cout << ' ';
	}
}

// вызов
int x = -234234;
outputBin(x, 16);
netrino вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
побитовые операции Dimarik Общие вопросы C/C++ 7 16.04.2010 19:27
Задачка, побитовые операции язык C ToxaRUS Помощь студентам 0 05.11.2009 19:51
Побитовые операции WinterLord Общие вопросы C/C++ 1 12.10.2008 22:39
РЕбята задали побитовые операции... AliG Помощь студентам 6 15.03.2007 20:08