Думайте о нем как о контейнере, в котором кодирование резервирует несколько битов для собственной синхронизации, и вы можете использовать оставшиеся биты.
Таким образом, для рассматриваемого диапазона кодировка "шаблон" имеет вид
110 abcde 10 fghijk
(где я оставил один пробел, чтобы отметить границу между шаблоном и значением из кодовой точки, которую мы хотим кодировать, и два пробела между фактическими байтами), и вы можете использовать11 бит abcdefghijk
для значения, которое вы на самом деле хотите передать.
Таким образом, для кодовой точки U + 07EB вы получите
0x07 00000111
0xEB 11101011
, где верхние пять нольбиты замаскированы (помните, мы получаем только 11 - потому что максимальное значение, которое кодировка может вместить в два байта, равно 0x07FF. Если у вас большее значение, кодировка будет использовать другой шаблон, который составляет три байта), и так
0x07 = _____ 111 (template: _____ abc)
0xEB = 11 101011 (template: de fghijk)
abc de = 111 11 (where the first three come from 0x07, and the next two from 0xEB)
fghijk = 101011 (the remaining bits from 0xEB)
с получением значения
110 11111 10 101011
aka 0xDF 0xAB.
Статья Википедии о UTF-8 содержит больше примеров с красиво раскрашенными числамик сэ-э, что откуда.