Поменять местами 4 старших байта и 4 младших в числе double (указатели) - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача следующая: дано число типа double. С помощью указателей поменять местами 4 первых и 4 последний байта в этом числе не переводя его в двоичную систему (оно же в памяти компьютера и так там в двоичной записи храниться)

Решение задачи: «Поменять местами 4 старших байта и 4 младших в числе double (указатели)»

textual
Листинг программы
#include <stdio.h>
 
int
main(int argc, char** argv)
{
    double lovely_number = -99.18;
    printf("%lf\n", lovely_number);
 
    char* iter = (char*) &lovely_number;
    char tmp;
    size_t num_len = sizeof lovely_number;
    size_t hlf_len = num_len / 2;
    size_t i;
    for (i = 0; i < hlf_len; ++i) {
        tmp = iter[ i ];
        printf("%c\n", tmp);
        iter[ i ] = iter[ num_len - i - 1 ];
        iter[ num_len - i - 1 ] = tmp;
    }
    printf("%lf\n", lovely_number);
    return 0;
}

Объяснение кода листинга программы

  1. Подключение стандартной библиотеки ввода-вывода
  2. Объявление переменных:
    • lovely_number (тип double)
    • iter (тип char*)
  3. Инициализация lovely_number значением -99.18
  4. Вывод значения lovely_number на экран
  5. Приведение указателя на double к указателю на char (iter)
  6. Определение переменной tmp типа char
  7. Определение переменной num_len типа size_t, которая содержит размер переменной lovely_number
  8. Определение переменной hlf_len типа size_t, которая содержит половину размера переменной lovely_number
  9. Определение переменной i типа size_t, которая используется в цикле
  10. Цикл for для перебора первых hlf_len символов (или байтов) в переменной lovely_number
  11. В каждой итерации цикла меняются местами два символа (или байта) в переменной lovely_number
  12. После завершения цикла выводится обновленное значение lovely_number
  13. Возврат 0, что означает успешный конец работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.364 из 5
Похожие ответы