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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка на чётность, MS VC ++ 6.0 
:(
    Опции темы
Nuzur
Дата 22.12.2004, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

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



А ка проверить число на ченость, есть такая функция, мол четное число или нет.


--------------------
Never again...
PM MAIL   Вверх
NiJazz
Дата 22.12.2004, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


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

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



Nuzur
Чётное - если делится на 2. smile
Код

if (my_digit % 2 == 0) // если чётное - остаток от деления на 2 должен быть нулём
{
   is_parity = true;    // переменная определяющая, чётное число или нет. true - чётное, false -  нечетное
}

PM MAIL   Вверх
Nuzur
Дата 22.12.2004, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 4.7.2004

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



Спасибо, плюсик не могу поставить smile


--------------------
Never again...
PM MAIL   Вверх
Domestic Cat
Дата 22.12.2004, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Поставил.


--------------------

PM   Вверх
bel_nikita
Дата 22.12.2004, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

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



Если оно (число) целое, то просто проверить самый первый бит smile
Код
if ( value & 1 )
{
 // нечетное
}
else
{
 // четное
}
Вот, пару функций:
Код
// проверка на нечетность
template<class T>
inline bool oddnumber(T value) {  return (value & 1); }

// проверка на четность
template<class T>
inline bool evennumber(T value) {  return !(value & 1); }


З.Ы.:
Цитата
Чётное - если делится на 2.
Неа. Четность - если установлен самый первый бит в единицу smile smile

Это сообщение отредактировал(а) bel_nikita - 22.12.2004, 23:36


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
NiJazz
Дата 20.7.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Jazz coder
****


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

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



Странно, если, например, разложить число 23, то получится такой вид: 10111. И где тут чётность? 
PM MAIL   Вверх
Fazil6
Дата 20.7.2006, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



Цитата

Странно, если, например, разложить число 23, то получится такой вид: 10111. И где тут чётность? 

правый бит 1 => нечетный если 0 - четный
 
PM MAIL   Вверх
ptr
Дата 20.7.2006, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(bel_nikita @  23.12.2004,  03:28 Найти цитируемый пост)
Неа. Четность - если установлен самый первый бит в единицу smile smile 

А если у меня процессор не с двоичной логикой, а с троичной? 


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
sergejzr
Дата 20.7.2006, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(ptr @  20.7.2006,  09:27 Найти цитируемый пост)
А если у меня процессор не с двоичной логикой, а с троичной?  

Сдай его в музей smile

По идее там чтото вроде проверки последнего значения на 1 (тогда нечётный). Но операции & что там дадут?

Вообще процессоры у нас вроде с четвероичной логикой:

true
false
undefined
buss error

Добавлено @ 11:38 
 Хотя  undefined может и не учитываться.. 


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



Цитата

По идее там чтото вроде проверки последнего значения на 1 (тогда нечётный). Но операции & что там дадут?

проверку и дадут 
PM MAIL   Вверх
CatOleg
Дата 20.7.2006, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



if( value % 2 )
{
  value -> нечетное
}
else
{
  value -> четное

PM MAIL WWW   Вверх
Kostt
Дата 21.7.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



!(value & 1) - сработает быстрее, чем value % 2, и ни чем не хуже 
PM MAIL   Вверх
ptr
Дата 21.7.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(sergej.z @  20.7.2006,  15:38 Найти цитируемый пост)
Вообще процессоры у нас вроде с четвероичной логикой:

true
false
undefined
buss error

С двузначной логикой: true (1) и false (0). undefined и buss error не относятся к логике процессора.

Цитата(Kostt @  21.7.2006,  15:33 Найти цитируемый пост)
!(value & 1) - сработает быстрее, чем value % 2, и ни чем не хуже  

Зато с (value%2==0) понятнее что делается, да и не особо медленне чем c (value&1).    

Это сообщение отредактировал(а) ptr - 21.7.2006, 13:22


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
sergejzr
Дата 21.7.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


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

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



Цитата(ptr @  21.7.2006,  10:22 Найти цитируемый пост)
Зато с (value%2==0) понятнее что делается, да и не особо медленне чем c (value&1).    

На 32 битном процессоре мрдленнее в 32 раза smile



Цитата(ptr @  21.7.2006,  10:22 Найти цитируемый пост)
С двузначной логикой: true (1) и false (0). undefined и buss error не относятся к логике процессора.

Относятся конечно. На undefined он кладёт, но ошибки он должен логически обрабатывать(что будет, если на бусе одновременно 1 и 0 ?). Это же обыкновенный микрочип. Просто доступа к тий логике у программиста нет. Она на аппаратном уровне. 


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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

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



модуль(%) - есть ни что иное, как арифметическое умножение на логарифм правой части выражения по основанию 2, так что операции (% 2) и (& 1) равнозначны, а самый младший бит является признаком нечетного числа (его еще называют parity), т.к. он инвертируется на каждый экземпляр последовательного числового ряда. 


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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