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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2009, 16:00   #1
jewels
 
Регистрация: 15.11.2009
Сообщений: 4
По умолчанию вывод числа в двоичной системе

может быть есть такой оператор, который позволяет выводит число в двоичной системе. Как например, cout<<hex<<32<<endl; , позволяет вывести число в 16-й???
Подскажите, пожалуйста
jewels вне форума Ответить с цитированием
Старый 26.12.2009, 19:37   #2
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от jewels Посмотреть сообщение
может быть есть такой оператор, который позволяет выводит число в двоичной системе. Как например, cout<<hex<<32<<endl; , позволяет вывести число в 16-й???
Подскажите, пожалуйста
Скорее всего тебе придется ручками число это преобразовывать путем деления и получения разрядов
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 26.12.2009, 20:19   #3
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
for(int i = 1; i < 9; i++)
{
  printf("%d", ((n & i) >> (i - 1)));
}
printf("\n");
Как то так...
BOBAH13 вне форума Ответить с цитированием
Старый 26.12.2009, 20:34   #4
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Может поможет!
Код:
#include <iostream>
using namespace std;
  int main()
  {
	  int n;
	 char b[100];
	 cin>>n;
	 cout<<itoa(n,b,16)<<endl;
system("pause");
  }
Cpluser вне форума Ответить с цитированием
Старый 26.12.2009, 21:00   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2BOBAH13
шота я не понял твой код.... да и выводит явно не то

Код:
	for(i = 7; i >= 0; --i) {
		printf("%d", (n >> i) & 1);
	}
	printf("\n");
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 26.12.2009, 21:31   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
2BOBAH13
шота я не понял твой код.... да и выводит явно не то

Код:
	for(i = 7; i >= 0; --i) {
		printf("%d", (n >> i) & 1);
	}
	printf("\n");
1. О порядке вывода бит речи не было
2. Потом, нумерация должна быть в [1;8]. Т.е. интересует номер бита.
3. (n & i) >> (i - 1) - тут n - число (байт), i - номер бита, n & i - берем маску, т.е. все остальные 7 бит в числе n будут нулевые, далее смещение вправо (свести число к младшему биту) т.е. i - 1 - почему -1 ? потому что первый бит (при i = 1) не должен смещаться за границы байта, значит первый бит сместить i - 1 т.е. 1 - 1 т.е. на ноль вправо, т.е. не смещать.

Что тут не ясно и что не верно ? Не понятно, хотя и не проверял на коде.
То что реализаций множество, это и так ясно, и то что каждый считает что его рещение верно - это тоже ясно мозг не согласится с тем, что он принял не верное решение ну тут уже оффтоп пошел
BOBAH13 вне форума Ответить с цитированием
Старый 26.12.2009, 21:41   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2BOBAH13
Цитата:
О порядке вывода бит речи не было
я и ниче не говорил про порядок. пожалуйста, обратный порядок:

Код:
	for(i = 0; i < 8; ++i) {
		printf("%d", (n >> i) & 1);
	}
Цитата:
Потом, нумерация должна быть в [1;8]. Т.е. интересует номер бита.
у меня нет -1, поэтому так, ибо какой смысл в сдвиге на 8 бит?

вообще я с битами очень редко работаю, поэтому твой код я не понял, а сделал так, как явно мне. откомпилил твой код - выводит неверный результат, поэтому и отписал.
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 26.12.2009, 21:55   #8
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Битва Титанов :D

А по теме - как по мне, так самый простой метод - пользоватсья %2, остаток от деления по сути очередной бит двоичного числа, не ошибиться только в порядке битов, правда кол-во итераций возможно придется заранее искать
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 26.12.2009, 21:59   #9
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2RoS
Цитата:
А по теме - как по мне, так самый простой метод - пользоватсья %2, остаток от деления по сути очередной бит двоичного числа, не ошибиться только в порядке битов, правда кол-во итераций возможно придется заранее искать
угу, я так в sql-е в написании стореда их и доставал) а еще можно union использовать
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 26.12.2009, 22:06   #10
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

Цитата:
Сообщение от jewels Посмотреть сообщение
может быть есть такой оператор, который позволяет выводит число в двоичной системе. Как например, cout<<hex<<32<<endl; , позволяет вывести число в 16-й???
Подскажите, пожалуйста
Кстати, ирония судьбы - ты сам и написал этот оператор <<
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано число в двоичной системе счисления. Проверить правильность ввода этого числа isus Помощь студентам 2 29.11.2009 23:32
Сложение, вычитание в двоичной системе счисления Vemor Паскаль, Turbo Pascal, PascalABC.NET 5 16.06.2009 14:02
Сложение в двоичной системе счисления Volchara Общие вопросы C/C++ 2 23.04.2009 19:54
работа в двоичной системе Toten Помощь студентам 3 06.03.2009 16:35
Деление чисел в двоичной системе счисления Mss_Smith Помощь студентам 9 04.05.2007 17:02