![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Серый |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 20.11.2005 Репутация: нет Всего: нет |
Столкнулся с проблемой мне нужно написать прогу, понять не могу одно как мне сделать чтобы она отличала четное число от не четного?
|
|||
|
||||
| BreakPointMAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 725 Регистрация: 15.9.2004 Где: Saratov Репутация: 14 Всего: 24 |
if(n%2==0) { /* число четное */} else {/*число нечетное*}
-------------------- "Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце") |
|||
|
||||
| sergejzr |
|
||||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Я бы посоветовал тебе разобраться с двумя вариантами.
Первый - ты проверяешь, делится ли число на 2 без остатка. Аналогично подобным способом можно проверить, делится ли число на 2,3 итд.
или Второй: Проверяешь последний бит числа. В двоичной цифре последний знак у нас или 0 или 1. Естествено, что во втором случае это и есть та самая еденица, которая не даст числу разделиться на 2 без остатка.
Второй вариант быстрее первого в N раз (Где N - количество бит int - в 32 двухбитной архитектуре - это 32 ) |
||||
|
|||||
| Серый |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 20.11.2005 Репутация: нет Всего: нет |
Вот я стормозил благодарю!
Добавлено @ 02:51 там число целое Добавлено @ 02:54 Пора спать почти 3:00 Спасибо!!! |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
Красиво --------------------
|
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Красиво, но относится к базовым знаниям программиста... Интересно, а пройдет ли такая фишка с процессорами Motorola. Kaк видно нет. Добавлено @ 04:50 А хотя нет, компилятор все сделает правильно... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Dreamer_0x01 |
|
|||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 12 |
а чего ж не пройти? На моем родимом AT89C52, и то проходит =)
С он на то и С, чтоб стандарт везде соблюдался. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
И Motorola это две разные вещи. Не я перепутал с асм вставками, вот они как раз не пройдут. А все сишные вещи как ты и сказал это дело компилятора - он и для motorola все правильно сделает. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
Имхо асм везде разный , но логические операции с битами присутствуют на любых чипах
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
А что там такого особенного? -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| cardinal |
|
||||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
Да блин.
http://www.cec-mc.ru/read/art40.shtml В процессорах motorola байты в памяти в другом порядке лежат, как мы привыкли. И соответственно если у тебя int с четырьмя байтами, то в асм еще подумать надо, где же твой нулевой битик. -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 8 Всего: 146 |
Да хорошо PS я имел ввиду, что если чип 8 битовый, тогда да надо думать , но в принципе этот чип и не предназначался для 4байтовых целых но имхо это к теме мало относится -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| AISIN |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 27.1.2005 Где: Пушкино Репутация: нет Всего: 1 |
Думаю,то на любом процессоре работать будет. На то они и процессоры. Архитектура у разных процессоров разная очень часто количество регистров разное и формат комманды у разных процессоров разный. Это значит для каждого процессора нужен свой ассемблер и свой компилятор. Компилятор в принципе сам определяет в какие регистры че записывать и код должен компилится почти для любого процессора, т. е. пишем вроде на обычном Си или Си++, а разные версии компиляторов собирают прогу для разных процессоров и разных операционок(если операционка есть). А с ассемблером такое не получиться. --------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002% |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Всё это конечно здорово, но имхо операция A & 1 (при том что типы A и 1 совпадают) эквивалентна a%2 на любом процессоре не зависимо от того в каком порядке там идут байты и биты (в конечном итоге i-ый бит единицы совпадает с i-ым битом A так как их типы равны), потому мне и интересно что в моте особенного Это сообщение отредактировал(а) Mayk - 10.2.2006, 16:16 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| AISIN |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 27.1.2005 Где: Пушкино Репутация: нет Всего: 1 |
Если ты работаешь с компилятором то тебе точно не нужно думать в каком порядке идут байты и биты.
Результат эквивалентный потомучто там двойка стоит (а%2) и результат будет или 1 или 0. А если будет а%3 то результат или 0 или 1 или 2. А если сравнивать бит то там только 0 или 1. --------------------
Внимание!!! Внимание!!!Запущена программа по завоеванию мира!!!Выполненно 0,000000000000000000000000000000000000000000000000000002% |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
еще раз...
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Да какая разница как записывается, пусть, число 0x12345678? Как 12345678, 78563412 или вообще как 34127856? Ведь1 будет записываться по тем же самым правилам - либо как 00000001, либо как 01000000, либо вообще как 00000100. И соответственно AND их будет правильным - 00 00 00 00.Результат не зависит от порядка байт и бит. блин. что-то мы повторяемся -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 2 Всего: 99 |
У тебя в асме будет такая строка
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
| val |
|
|||
![]() Program developer ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 992 Регистрация: 14.1.2003 Где: г. Киев Репутация: нет Всего: 7 |
Если будешь писать на ассемблере, то нет, не пройдет. Мотороловская архитектура использует запись чисел в формате big endian, а интеловская - little endian. Отличаются эти форматы данных последовательностью записи бит. Big endian - прямой порядок, little endian - обратный. Ну а на чистом С/С++ - все, конечно, Ок. Добавлено @ 17:46 Эх, сколько я ошибок с этим делом натворил... Это сообщение отредактировал(а) val - 10.2.2006, 17:46 -------------------- Терпимость - величайшее благо человечества... Ярчайший признак интеллекта – постоянно хорошее настроение… |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
лучше исползовать %2
любой мало-мальски разумный компилятор сведет это к &1, произведя при этом все необходимые действия зато другой программист, читая этот код, подумает не "что же он закодировал в последнем бите числа", а "проверяет на четность"... -------------------- qqq |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |