
Endianness се отнася до последователния ред, в който байтовете се подреждат в по-големи числови стойности, когато се съхраняват в паметта или по време на предаване. Двата основни типа endianness, които съществуват, са big endian и little endian. Big endian е най-значимият байт в най-малкия адрес, а little endian е най-малкият байт в най-малкия адрес. В C програмирането endianness има значение, когато четете двоични данни директно, без да използвате операторите за извличане. Вижте решението и подробна професионална разбивка на кода, предоставен за откриване на endianness на система. Освен това ще научите за значението на библиотеките и функциите, включени в решаването на този на пръв поглед сложен проблем.
#include<stdio.h> int main() { unsigned int i = 1; char *c = (char*)&i; if (*c) printf("Little endian"); else printf("Big endian"); return 0; }
Стъпка по стъпка Обяснение на кода
Предоставеният кодов фрагмент е написан на C, процедурен език за програмиране с общо предназначение, който ще определи endianness на системата.
Първо, нека анализираме #include
Ключова функция и променливи
След това се декларира основната функция. Това е входната точка на всяка C програма. В рамките на тази функция цяло число без знак i се декларира и инициализира на 1, а символен указател 'c' се декларира и инициализира на адреса на i.
Условният оператор, който следва, проверява дали първият байт в char, към който сочи 'c', е 1 или 0. Ако е 1, системата е little endian, в противен случай е big endian.
Тази условна проверка формира сърцевината на програмата и е логиката, която използваме, за да открием последователността на системата към края.
Функцията printf се използва за показване на „Little endian“ или „Big endian“ въз основа на резултата от нашата условна проверка. Той принадлежи към библиотеката stdio.h и се използва за форматиране на изхода.
Разбиране на библиотеките
Stdio.h е стандартна библиотека в програмирането на C, която включва дефиниции на типове, макроси и функции за задачи като операции за вход/изход, достъп до файлове, обработка на низове и т.н. Тя играе жизненоважна роля при показването на изхода на екрана.
Разбиране на типове данни и указатели
В програмирането на C указателите са променливи, които съхраняват адреси на други променливи. Тук 'char *c' е указател към символ.
Побитовият оператор '&' се използва за получаване на адреса на 'i' и присвояването му на 'c'. Целта на тази операция е да се получи представяне на ниво байт на целочислената променлива 'i', за да се провери нейният endianness.
За да обобщим, откриването на endianness на системата е от решаващо значение при определени задачи за програмиране на ниско ниво и този код предоставя прост метод за проверка на endianness с помощта на езика за програмиране C. Освен това разбирането на библиотеките, функциите, типовете данни и указателите, приложени в тази част от кода, ще постави здрава основа за вашето пътуване в програмирането на C.