Что такое старшие (high-order) и младшие (low-order) биты? В чем их разница?

Ответ

Старшие биты (High-order bits) — это биты в двоичном представлении числа, которые имеют наибольший вес (значимость). Они находятся слева. Самый левый бит называется MSB (Most Significant Bit — самый значимый бит).

Младшие биты (Low-order bits) — это биты с наименьшим весом. Они находятся справа. Самый правый бит называется LSB (Least Significant Bit — наименее значимый бит).

Пример для 8-битного числа 0b11001010 (202):

11001010
↑ ↑
MSB LSB

  • Старший бит (MSB)1. В знаковых числах (signed) он определяет знак (0 — положительное, 1 — отрицательное).
  • Младший бит (LSB)0. Его значение определяет, является ли число чётным (0) или нечётным (1).

Пример в Go:

package main

import "fmt"

func main() {
    num := uint8(0b11001010) // 202

    // Получаем MSB с помощью сдвига вправо на 7 позиций
    msb := num >> 7

    // Получаем LSB с помощью побитового "И" с 1
    lsb := num & 1

    fmt.Printf("Число: %d (%08b)n", num, num)
    fmt.Printf("Самый значимый бит (MSB): %dn", msb) // Выведет: 1
    fmt.Printf("Наименее значимый бит (LSB): %dn", lsb) // Выведет: 0
}

Практическое применение:

  • MSB: Определение знака числа, старшие байты в сетевых протоколах (Big Endian/Little Endian).
  • LSB: Проверка на чётность, использование в качестве флагов, криптография, генераторы псевдослучайных чисел.