Lea big endian, little endian, orden de bytes, MSB, LSB, MSB, LSB en un artículo

Big endian, little endian, endianness, MSB, LSB, MSB, LSB

Se necesitan 5 minutos para comprender completamente los malos conceptos mencionados anteriormente en el desarrollo integrado y de Internet de las cosas.

¿MSB, LSB?

Para conceptos relacionados con flujos de bits

MSB (bit más significativo): el bit más significativo, el bit que representa el valor más alto en binario, y este bit tiene el mayor impacto en el valor.
LSB (bit menos significativo): el bit menos significativo, el bit que representa el valor más bajo en binario.
inserte la descripción de la imagen aquí

Tome el número literal 9 como ejemplo, que es 1001 en binario.

  • Si su MSB es incorrecto, es decir, el bit más alto, 1, es incorrecto y se convierte en 0, entonces el número entero se convierte en 1. el error es 8
  • Si su LSB es incorrecto, es decir, el 1 más bajo es incorrecto y se convierte en 0, entonces el número entero se convierte en 8. el error es 1

MSB, LSB

Hay dos tipos de datos de 7 bits en un 10001111 de datos de 8 bits:
inserte la descripción de la imagen aquí

  • MSB de 7 bits: esta forma de escribir generalmente se refiere a los 7 bits superiores: 1000111
  • LSB de 7 bits: esta forma de escribir generalmente se refiere a los 7 bits inferiores: 0001111

Para conceptos relacionados con flujos de bytes

MSB (Byte más significativo): un byte con el peso más alto en una secuencia de varios bytes.
LSB (Byte menos significativo): el byte con el peso más pequeño en una secuencia de varios bytes.
inserte la descripción de la imagen aquí

¿Cómo confirmar el significado específico de MSB y LSB?

¿Cómo distinguir entre MSB (bit más significativo) y MSB (byte más significativo)?
Según el escenario de uso específico, si el objeto es un concepto relacionado con el flujo de bits (por ejemplo, en el campo de la transmisión de datos, el método de transmisión de puerto serie estándar es primero de bajo orden, y cuando el chip envía datos a través del pin TX , envía bit 0, bit 1, , ,,, bit 7.), entonces el MSB es (bit más significativo) en este momento.
Si se trata de un concepto relacionado con bytes (como el orden en que se almacenan datos enteros en la memoria en una máquina de 32 bits), es un (Byte más significativo). Depende principalmente de si el objeto de discusión es un flujo de bits, o cuando se almacena y transmite un flujo de bytes.

¿Qué es la endianidad?

El orden de bytes se refiere al orden de bytes de los datos que ocupan varios bytes en la memoria de un dispositivo integrado o en un enlace de comunicación de red.
El valor literal es 0x12345678, que tiene un total de 4 bytes, estos cuatro bytes son: 0x78, 0x56, 0x34 y 0x12 en el orden del bit inferior -> el bit superior del valor literal.
Su orden en almacenamiento de memoria y transmisión de red puede ser:

  • La primera posibilidad: 0x12, 0x34, 0x56, 0x78
  • La segunda posibilidad: 0x78, 0x56, 0x34, 0x12
    Dé a estas dos posibilidades un nombre más profesional, y habrá los nombres de big-endian y little-endian, denominados big-endian (Big-Endian), Little-Endian (Little Endian).
    Una imagen representa dos órdenes de bytes:
    inserte la descripción de la imagen aquí
  • Big-Endian (Big-Endian) almacena el byte de orden inferior del valor literal en la dirección de orden superior de la memoria (o en la transmisión de red, el remitente envía primero el byte de orden superior y el receptor considera el primer byte recibido como la vista de sección de palabra de orden superior).
  • Little-Endian (Little-Endian), coloque el bit inferior del valor literal en una dirección más pequeña (o transmita el byte inferior primero en la transmisión de red).

¿Por qué hay endianness?

Por las características de la unidad de memoria de la computadora, el orden de bytes little-endian suele ser más eficiente para cargar y ejecutar , y yo prefiero el orden little-endian. En la transmisión de red, la parte más importante que afecta a los datos se transmite primero , por lo que, naturalmente, el extremo receptor recibe primero los bytes de orden superior (consulte la introducción de Byte más significativo anterior). Por lo general, el orden de bytes de la red es big endian.

Escriba un programa para confirmar el endianness del dispositivo actual.

Siempre hay preguntas de este tipo en las entrevistas incrustadas, escriba un programa de prueba, amigo:

bool check_endian()
{
    
    
	union test {
    
    
		uint8_t u8;
		int i32;
	}test;
	test.i32 = 1;
	return (test.u8 == 0);
}
int main()
{
    
    
	if (check_endian() == true)
		printf("big\n");
	else
		printf("little\n");

	return 0;
}

Resumir

  1. MSB puede referirse a MSB (bit más significativo) o MSB (byte más significativo). De manera similar, LSB puede referirse a LSB (bit menos significativo) o (byte menos significativo). Si se refiere específicamente a bit o byte, debe determinarse junto con el contexto.
  2. MSBs: Esta forma de escribir suele referirse a los bits altos, LSBs: Esta forma de escribir suele referirse a los bits de varios bits.
  3. El orden de bytes se refiere al orden de bytes de los datos que ocupan varios bytes en la memoria de un dispositivo integrado o en un enlace de comunicación de red. El orden de los bytes se divide en big endian y little endian, y el orden de los bytes de la red es big endian.
    (Gracias por sus Me gusta o colecciones, para ayudar a que la cultura del ingeniero mejore cada vez más)

Supongo que te gusta

Origin blog.csdn.net/wangyx1234/article/details/130352079
Recomendado
Clasificación