чётное/не чётное?
- From
- Andrey Tarasevich (2:5020/175.2)
- To
- Sochenko Alexander ()
- Date
- 2003-01-23T04:19:16Z
- Area
- RU.ALGORITHMS
From: "Andrey Tarasevich" <atarasevich@telocity.com>
Wed Jan 22 2003 06:54, Sochenko Alexander wrote to Vlad Salikov:
VS>> А как математически узнать чётное число или нет, если в ЯП отсутствует
VS>> функция возвращающая дробную часть числа?
SA> на C/С++ делается так
SA> bool NeChet=Chislo&1;
SA> Проще говоря еденица в младшем разряде двоичного числа
SA> (например 9 = 1001) однозначно указывает на нечетность
SA> т.е. для ДВОИЧНОЙ систеы счисления (а в PC в таком представлении
SA> хранятся числа обычно) достаточно проверить младший бит числа.
Если речь идет о С/С++, то в каком представлении хранятся числа в машине
никакой роли не играет. Спецификация битовых операций в этих языках дается на
логическом, а не на физическом уровне, и результат 'N & 1' всегда дает ответ о
четности положительного числа N, пусть подлежащая архитектура будет хоть
троичной, хоть семиричной.
С отрицательными числами ситуация сложнее. Результат зависит от применяемой
данной реализацией транслятора (не архитектурой, а именно реализацией) формы
представления отрицательных целых чисел. Для дополнительного кода и кода
signed magnitude ответ будет верным и для отрицательных чисел. А вот для
отрицательных чисел, представленных в обратном коде, этот способ будет давать
ответ "с точностью до наоборот".
Best regards,
Андрей.
--- ifmail v.2.15dev5
* Origin: FidoNet Online - http://www.fido-online.com (2:5020/175.2)