Функция is_little_endian - C (СИ)

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

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

Нужна программа,в которой используется описанное ниже.
Напишите функцию is_little_endian(), которая возвращает 1
при компиляции и запуске на машине с прямым порядком байтов (little-endian),
и возвращает 0 при компиляции и запуске на машине с обратным порядком
байтов (big-endian). Функция должна работать на машине с любым размером
слова (word).

Решение задачи: «Функция is_little_endian»

textual
Листинг программы
#include <stdio.h>
#include <stdint.h>
 
enum
{
  endian_big,
  endian_little,
  endian_pdp,
  endian_unknown
};
 
int CheckEndianness(void)
{
  static const uint32_t endianness = 0xA1B2C3D4;
 
  switch (((unsigned char*)&endianness)[0])
  {
  case 0xD4:
    return endian_little;
  case 0xA1:
    return endian_big;
  case 0xB2:
    return endian_pdp;
  default:
    return endian_unknown;
  }
}
 
 
int main(void)
{
  printf("%d\n", CheckEndianness());
  return 0;
}

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

В данном коде определена функция CheckEndianness, которая определяет порядок байтов в 32-битном числе. Список действий:

  1. В функции объявлена константа endianness со значением 0xA1B2C3D4.
  2. В переменной-флагере switch происходит проверка байта с индексом 0 в числе endianness.
  3. Если значение этого байта равно 0xD4, то функция возвращает значение endian_little.
  4. Если значение этого байта равно 0xA1, то функция возвращает значение endian_big.
  5. Если значение этого байта равно 0xB2, то функция возвращает значение endian_pdp.
  6. Если значение этого байта не равно ни одному из вышеописанных, то функция возвращает значение endian_unknown.
  7. В функции main вызывается функция CheckEndianness и её результат выводится на экран с помощью функции printf.
  8. Функция main возвращает 0, заканчивая работу программы.

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


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

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

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