Little vs Big Endianess: How to interpret the test

前端 未结 6 965
长发绾君心
长发绾君心 2020-12-11 03:44

So I\'m writing a program to test the endianess of a machine and print it. I understand the difference between little and big endian, however, from what I\'ve found online,

6条回答
  •  盖世英雄少女心
    2020-12-11 04:05

    If we split into different parts:

    1. &x: This gets the address of the location where the variable x is, i.e. &x is a pointer to x. The type is int *.

    2. (char *)&x: This takes the address of x (which is a int *) and converts it to a char *.

    3. *(char *)&x: This dereferences the char * pointed to by &x, i.e. gets the values stored in x.

    Now if we go back to x and how the data is stored. On most machines, x is four bytes. Storing 1 in x sets the least significant bit to 1 and the rest to 0. On a little-endian machine this is stored in memory as 0x01 0x00 0x00 0x00, while on a big-endian machine it's stored as 0x00 0x00 0x00 0x01.

    What the expression does is get the first of those bytes and check if it's 1 or not.

提交回复
热议问题