Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как определить четное чило или нет 
V
    Опции темы
Серый
Дата 6.2.2006, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 20.11.2005

Репутация: нет
Всего: нет



Столкнулся с проблемой мне нужно написать прогу, понять не могу одно как мне сделать чтобы она отличала четное число от не четного?


PM MAIL   Вверх
BreakPointMAN
Дата 6.2.2006, 02:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



if(n%2==0) { /* число четное */} else {/*число нечетное*}


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
sergejzr
Дата 6.2.2006, 02:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 19
Всего: 360



Я бы посоветовал тебе разобраться с двумя вариантами.

Первый - ты проверяешь, делится ли число на 2 без остатка. Аналогично подобным способом можно проверить, делится ли число на 2,3 итд.
Код

bool even(int number)
{
 return !(number%2);
}



или
Второй: Проверяешь последний бит числа. В двоичной цифре последний знак у нас или 0 или 1. Естествено, что во втором случае это и есть та самая еденица, которая не даст числу разделиться на 2 без остатка.
Код

bool even(int number)
{
 return !(number&1);
}


Второй вариант быстрее первого в N раз (Где N - количество бит int - в 32 двухбитной архитектуре - это 32 )


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Серый
Дата 6.2.2006, 02:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 20.11.2005

Репутация: нет
Всего: нет



Вот я стормозил благодарю!
Добавлено @ 02:51
там число целое
Добавлено @ 02:54
Пора спать почти 3:00

Спасибо!!!
PM MAIL   Вверх
chipset
Дата 6.2.2006, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4071
Регистрация: 11.1.2003
Где: Seattle, US

Репутация: 27
Всего: 165



Цитата(sergej.z @ 5.2.2006, 16:48 Найти цитируемый пост)

Второй: Проверяешь последний бит числа. В двоичной цифре последний знак у нас или 0 или 1. Естествено, что во втором случае это и есть та самая еденица, которая не даст числу разделиться на 2 без остатка.

Красиво smile


--------------------
Цитата(Jimi Hendrix)
Well, I stand up next to a mountain
And I chop it down with the edge of my hand
PM MAIL WWW   Вверх
cardinal
Дата 6.2.2006, 04:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата(chipset @ 6.2.2006, 00:56 Найти цитируемый пост)

Красиво

Красиво, но относится к базовым знаниям программиста... smile

Интересно, а пройдет ли такая фишка с процессорами Motorola.

Kaк видно нет.
Добавлено @ 04:50
А хотя нет, компилятор все сделает правильно... smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Dreamer_0x01
Дата 6.2.2006, 06:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 12



а чего ж не пройти? На моем родимом AT89C52, и то проходит =)
С он на то и С, чтоб стандарт везде соблюдался.


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
cardinal
Дата 6.2.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата(Dreamer_0x01 @ 6.2.2006, 04:17 Найти цитируемый пост)

AT89C52

И Motorola это две разные вещи.

Не я перепутал с асм вставками, вот они как раз не пройдут. А все сишные вещи как ты и сказал это дело компилятора - он и для motorola все правильно сделает.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Romikgy
Дата 6.2.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Имхо асм везде разный , но логические операции с битами присутствуют на любых чипах


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Mayk
Дата 6.2.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(cardinal @ 6.2.2006, 08:50 Найти цитируемый пост)

Интересно, а пройдет ли такая фишка с процессорами Motorola.

А что там такого особенного? smile


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
cardinal
Дата 6.2.2006, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата(Romikgy @ 6.2.2006, 15:40 Найти цитируемый пост)

Имхо асм везде разный , но логические операции с битами присутствуют на любых чипах

Да блин. smile Не об этом я!
Цитата

Заодно отметим, что размещение битов 32-разрядного слова данных соответствует порядку little endian ( LSB соответствует биту 0), а размещение байтов соответствует порядку big endian (байт 0 размещается по адресу « n », байт 1 размещается по адресу « n + 1», байт 2 размещается по адресу « n + 2» и т.д.).

http://www.cec-mc.ru/read/art40.shtml
В процессорах motorola байты в памяти в другом порядке лежат, как мы привыкли. И соответственно если у тебя int с четырьмя байтами, то в асм еще подумать надо, где же твой нулевой битик.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Romikgy
Дата 6.2.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(cardinal @ 6.2.2006, 16:57 Найти цитируемый пост)

Да блин.

Да хорошо smile
PS я имел ввиду, что если чип 8 битовый, тогда да надо думать , но в принципе этот чип и не предназначался для 4байтовых целых smile если чип 32 битный , то у него есть команды обращения к памяти, для взятия сразу 4байтного числа, а в этом случае пусть чип думает , сколько и в каком порядке брать байт,
но имхо это к теме мало относится smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
AISIN
Дата 10.2.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



Цитата(cardinal @ 6.2.2006, 04:50 Найти цитируемый пост)

Интересно, а пройдет ли такая фишка с процессорами Motorola.

Думаю,то на любом процессоре работать будет. На то они и процессоры.
Цитата(Mayk @ 6.2.2006, 17:51 Найти цитируемый пост)

А что там такого особенного?

Архитектура у разных процессоров разная очень часто количество регистров разное и формат комманды у разных процессоров разный. Это значит для каждого процессора нужен свой ассемблер и свой компилятор. Компилятор в принципе сам определяет в какие регистры че записывать и код должен
компилится почти для любого процессора, т. е. пишем вроде на обычном Си или Си++, а разные версии
компиляторов собирают прогу для разных процессоров и разных операционок(если операционка есть).
А с ассемблером такое не получиться.




--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
Mayk
Дата 10.2.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(AISIN @ 10.2.2006, 19:58 Найти цитируемый пост)

Архитектура у разных процессоров разная очень часто количество регистров разное и формат комманды у разных процессоров разный. Это значит для каждого процессора нужен свой ассемблер и свой компилятор. Компилятор в принципе сам определяет в какие регистры че записывать и код должен
компилится почти для любого процессора, т. е. пишем вроде на обычном Си или Си++, а разные версии
компиляторов собирают прогу для разных процессоров и разных операционок(если операционка есть).
А с ассемблером такое не получиться.

Всё это конечно здорово, но имхо операция A & 1 (при том что типы A и 1 совпадают)
эквивалентна a%2 на любом процессоре не зависимо от того в каком порядке там идут байты и биты (в конечном итоге i-ый бит единицы совпадает с i-ым битом A так как их типы равны), потому мне и интересно что в моте особенного

Это сообщение отредактировал(а) Mayk - 10.2.2006, 16:16


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
AISIN
Дата 10.2.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 27.1.2005
Где: Пушкино

Репутация: нет
Всего: 1



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

Результат эквивалентный потомучто там двойка стоит (а%2) и результат будет или 1 или 0. А если будет а%3 то результат или 0 или 1 или 2. А если сравнивать бит то там только 0 или 1.
--------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002%
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0615 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.