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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2015, 23:09   #1
rust76
Новичок
Джуниор
 
Регистрация: 29.04.2015
Сообщений: 2
По умолчанию C# Определение четности с помощью оператора сдвига

Нужно написать программу, которая будет выполнять проверку чисел на четность.
Известно, что у четных чисел младший бит имеет значение 0 .

Вопрос: каким образом вставить условие if-else, чтобы он определял, младший бит=1 значит число нечетное, если младший бит=0, то число четное?

Способ деления на 2 и проверка остатка уже сделал, нужно со сдвигом попробовать.
rust76 вне форума Ответить с цитированием
Старый 29.04.2015, 23:16   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Сдвиг вправо - это ведь и есть деление на два.
Вадим Мошев вне форума Ответить с цитированием
Старый 29.04.2015, 23:53   #3
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Сдвиг вправо - это ведь и есть деление на два.
Только у ТС работа с битами. Так что для определения чётности таким способом, помимо сдвига, нужна ещё одна побитовая операция.
Хотя тоже самое решение можно получить гораздо проще с помощью простого побитового "И".

Последний раз редактировалось Streletz; 30.04.2015 в 01:07.
Streletz вне форума Ответить с цитированием
Старый 30.04.2015, 06:48   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нужно со сдвигом попробовать.
А действительно, че это со сдвигом? Почему не &&?
Цитата:
нужна ещё одна побитовая операция.
Если сделать два сдвига. Один на 31 бит влево, другой такой же вправо то получит как раз ноль или единицу. Другое дело что это нецелесообразно. Или я чего-то не понимаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.04.2015, 11:50   #5
rust76
Новичок
Джуниор
 
Регистрация: 29.04.2015
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А действительно, че это со сдвигом? Почему не &&?
Каким образом сделать с &&?
rust76 вне форума Ответить с цитированием
Старый 30.04.2015, 12:01   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну, если я правильно помню то
Код:
int i=значение;
if(i & 1 == 0) четное; else нечетное.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С помощью оператора if определить Ghyt Помощь студентам 3 19.11.2014 12:53
С помощью оператора цикла for вычислить y Ghyt Помощь студентам 0 16.11.2014 15:06
Определение оператора < в структуре из двух int Leiph Общие вопросы C/C++ 2 05.09.2013 21:04
Определение сдвига изображений Hard55 Мультимедиа в Delphi 2 08.06.2012 22:19
Определение четности/нечетности Assemblerman Помощь студентам 11 25.08.2011 21:49