|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Andrew Ezhguroff 2:5020/400 07 Oct 2002 19:21:08 To : Alexey Krasnov Subject : Re: Как закодировать? -------------------------------------------------------------------------------- Привет! "Alexey Krasnov" <Alexey.Krasnov@p96.f196.n5066.z2.fidonet.org> сообщил(а): AE>> Все равно не работает: если у нас, например, десятичное число 192 AE>> (двоичное - 11000000), то твоя программа выдаст 0000000011 вместо AE>> 0000000011000000. AK> а самому написать никак ? Hа Си - пожалуйста (для машины с двоичной арифметикой в дополнительном коде). Итерации: #include <limits.h> void printbin(int val){ char Buf[CHAR_BIT*sizeof(int)]; char *Tmp = Buf; do{ *Tmp++ = '0'+(val&1); val=(val>>1)&INT_MAX }while(val); while(Tmp!=Buf)putchar(*--Tmp); } Рекурсия: void printbin(int val){ char Tmp = (val&1)+'0'; if(val=(val>>1)&INT_MAX)printbin(val); putchar(Tmp); } А вот в СТАHДАРТHОМ (борландовские извращения меня не интересуют) Паскале битовых операций и сдвигов для целых нет. Так что придется делать через div и odd (или mod), да еще контролировать кол-во знаков (из-за "клонирования" знакового разряда). Либо через запись с вариантами, где одно поле - целое, а второе - множество. С уважением, Андрей. -- Отправлено через сервер Форумы@mail.ru - http://talk.mail.ru --- ifmail v.2.15dev5 * Origin: Talk.Mail.Ru (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/6488171bce71.html, оценка из 5, голосов 10
|