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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2012, 16:09   #1
Alina111
Пользователь
 
Регистрация: 20.12.2011
Сообщений: 40
Восклицание Си.Побитовые операции

Дано короткое целое(2байта) неотрицательное число. Произвести сортировку его двоичного представления так, чтобы все единицы располагались в старших разрядах, а нули в младших.
Alina111 вне форума Ответить с цитированием
Старый 24.06.2012, 16:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
	int n=123,ones=0;
	for(int i=0;i<sizeof(n)*8;i++,n>>=1){
		printf("%d",n&1);		
		ones+=n&1;
	}
	n=32-ones;printf("\n");
	for(;ones;ones--)printf("1");
	for(;n;n--)printf("0");
	getchar();
	return 0;
Подойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2012, 17:24   #3
Alina111
Пользователь
 
Регистрация: 20.12.2011
Сообщений: 40
По умолчанию

А если число с клавиатуры вводится, я пишу:
Код:
int n,ones=0;
printf("Введите исходное число:\n");
scanf("%hx",&n);
но так почему-то не работает,что не так?
Alina111 вне форума Ответить с цитированием
Старый 24.06.2012, 17:26   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
%hx
Это что? Может стоит поставить %d
?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2012, 17:30   #5
Alina111
Пользователь
 
Регистрация: 20.12.2011
Сообщений: 40
По умолчанию

Так в примере подобной задачи было написано...
исправила,но результата нет
Alina111 вне форума Ответить с цитированием
Старый 24.06.2012, 18:37   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ясно. С таким подходом пиши
Код:
scanf("%hx",&n);flushall();
scanf оставляет в буфере символ энтера, так что придется его очищать.
А результат был, просто ты его не видишь.
Между прочим не будь школотой - рассказывай что у тебя на экране происходит, телепатов тут не любят.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2012, 20:53   #7
Alina111
Пользователь
 
Регистрация: 20.12.2011
Сообщений: 40
По умолчанию

Спасибо большое!
Alina111 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Побитовые операции Unique Паскаль, Turbo Pascal, PascalABC.NET 3 29.08.2010 18:50
Побитовые операции С++ Defa4ka Помощь студентам 4 22.06.2010 14:55
побитовые операции Александе еть я Общие вопросы C/C++ 2 18.04.2010 13:31
побитовые операции Dimarik Общие вопросы C/C++ 7 16.04.2010 19:27
Побитовые операции WinterLord Общие вопросы C/C++ 1 12.10.2008 22:39