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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.02.2010, 14:19   #1
Александр Елис
Пользователь
 
Регистрация: 18.08.2009
Сообщений: 70
По умолчанию Битовые операции(С)

Доброго всем времени суток! Честно говоря, с битовыми операциями сталкиваюсь впервые... Объясните, пожалуйста, задание:
Цитата:
Создайте программу, считывающую со стандартного ввода десятичное число со знаком и с помощью битовых операций вычисляющую его модуль, который должен выводиться на стандартный вывод.

Последний раз редактировалось Stilet; 16.02.2010 в 15:26.
Александр Елис вне форума Ответить с цитированием
Старый 16.02.2010, 14:23   #2
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

В чем создать то? Могу на листочке в клеточку с помощью ножниц методом побитового сдвига клеточек
danekne вне форума Ответить с цитированием
Старый 16.02.2010, 14:29   #3
Александр Елис
Пользователь
 
Регистрация: 18.08.2009
Сообщений: 70
По умолчанию

На С... 1
Александр Елис вне форума Ответить с цитированием
Старый 16.02.2010, 14:35   #4
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Так в чем проблема? Проверяем на неотрицательность. Если элемент отрицательный - делаем побитовый сдвиг влево на один и получаем модуль. Если не отрицательный то ничего не делаем
danekne вне форума Ответить с цитированием
Старый 16.02.2010, 16:14   #5
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Цитата:
Сообщение от danekne Посмотреть сообщение
Если элемент отрицательный - делаем побитовый сдвиг влево на один и получаем модуль.
Ой ли?!
Vago вне форума Ответить с цитированием
Старый 16.02.2010, 16:21   #6
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Точно. Фигню сказал.
danekne вне форума Ответить с цитированием
Старый 16.02.2010, 18:19   #7
Vago
Форумчанин
 
Регистрация: 15.01.2010
Сообщений: 948
По умолчанию

Александр Елис, эту задачу преподаватели, вообще-то, любят обставлять разнообразными дополнительными ограничениями. Например, запретом использовать оператор if Но, хоть с ограничениями, хоть без, нет смысла копаться в битовых и логических операторах, пока Вы не разберётесь с машинным представлением чисел (хотя бы целых, для начала).
Vago вне форума Ответить с цитированием
Старый 16.02.2010, 18:32   #8
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Вы че, люди?
Какие побитовые сдвиги?

Если бит знака- самый старший(читай-левый), то налаживаем на него такую масочку:
Код:
01111111
с помощью волшебного AND.
Levsha100 вне форума Ответить с цитированием
Старый 16.02.2010, 18:51   #9
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от Levsha100 Посмотреть сообщение
Вы че, люди?
Какие побитовые сдвиги?

Если бит знака- самый старший(читай-левый), то налаживаем на него такую масочку:
Код:
01111111
с помощью волшебного AND.
Угу и получим бааалсое число )) Отрицательные числа в дополнительном коде хранятся, так что нужно ещё инверсию делать...
P.S.
Код:
int n = -2;
if( n < 0 )
    n = ~n + 1;
netrino вне форума Ответить с цитированием
Старый 16.02.2010, 20:07   #10
Александр Елис
Пользователь
 
Регистрация: 18.08.2009
Сообщений: 70
По умолчанию

Спасиббо все, кто ответил, но я решил следующим образом(для нашей универской долбьооперационки )
Код:
#include <stdio.h>
int main(void)
{
	int QWERTY;
	int temp;
	printf("\nPlease enter an integer: ");
	scanf("%d",&QWERTY);
	printf("\nQWERTY: %d\n",QWERTY);
	temp = QWERTY;
	if((temp>>31)==0)
	{
		printf("\nReturned value: %d\n", QWERTY);
 	}
	else 
	{
		QWERTY=(~QWERTY)+1;
		printf("\nReturned value: %d\n", QWERTY);
	}
	return 0;
}
И кстати, широка ли область применения битовых операций?(стоит ли на них заострять внимание?)

Последний раз редактировалось Александр Елис; 16.02.2010 в 20:09.
Александр Елис вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Битовые операции ("")(Э_Є)("") Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 04.07.2009 13:19
Битовые операции ("")(Э_Є)("") Общие вопросы C/C++ 4 03.07.2009 19:15
Битовые операции DrAlexx2121 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 14.06.2008 22:26
Битовые операции LEX.darnica Помощь студентам 14 23.12.2007 19:40
Битовые операции zetrix Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 15.12.2006 11:08