|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrey Tarasevich 2:5020/175.2 23 Jan 2003 05:19:16 To : Sochenko Alexander Subject : чётное/не чётное? -------------------------------------------------------------------------------- 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> т.е. для ДВОИЧHОЙ систеы счисления (а в 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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/33008bd0c531.html, оценка из 5, голосов 10
|