Консультация № 178146
01.05.2010, 11:46
0.00 руб.
0 3 1
Доброго времени суток дорогие эксперты:
Я уже раз обращался к вам с этой задачей, и обращусь еще раз только с другим вопросом.

Дано целое неотрицательное число <216. Получить число перестановкой битов каждого байта данного числа в обратном порядке.

Нужно написать 2 процедуры( одна на си а другая на паскале(не стал задавать в оддельный вопрос её(едентично ж все таки))) которые переставляли байт числа в обратном порядке. Обрабатывали так сказать число по байтам.

Использовать Турбо си, Code Block (Borland или FreePascal)
Спасибо за внимание)

Обсуждение

давно
Академик
20764
1861
01.05.2010, 12:44
общий
это ответ
Здравствуйте, Юдин Евгений Сергеевич.
Содержательная часть - в приложении. main() написан только для простой проверки. Его надо переписать.
Вообще-то байты лучше переворачивать с помощью таблицы, только это может не понравиться преподавателю.
Функция работает с любыми числами, а не только теми, что влезают в один байт как в условии.


Приложение:
unsigned char rev_byte (unsigned char src) {
unsigned char dst;
int cnt;
for (dst = 0, cnt = 0; cnt < 8; ++cnt, src >>= 1) {
dst <<= 1;
if (src & 1) dst |= 1;
}
return dst;
}

int rev_int(int src) {
unsigned cnt;
union {
int src;
unsigned char bytes[sizeof(int)];
} d;
d.src = src;
for (cnt = 0; cnt < sizeof(int); ++cnt)
d.bytes[cnt] = rev_byte (d.bytes[cnt]);
return d.src;
}

#ifdef DEBUG
#include <stdio.h>
int main(int ac, char **av) {
printf("%d\n", rev_int(1000000));
return 0;
}
#endif
давно
Академик
320937
2216
01.05.2010, 13:29
общий
Юдин Евгений Сергеевич:
Добрый день! А чем не устраивают ответы
https://rfpro.ru/question/177891
https://rfpro.ru/question/177700
Неизвестный
03.05.2010, 10:10
общий
Lamed:
Цитата: lamed
Юдин Евгений Сергеевич:
Добрый день! А чем не устраивают ответы
https://rfpro.ru/question/177891
https://rfpro.ru/question/177700


Устраивают, только там немного не так как требовалось в итоге условия изменились когда я тестировал программу
Форма ответа