stringtranslate.com

Расширение знака

Расширение знака (иногда сокращенно секст , особенно в мнемонике ) — это операция в компьютерной арифметике по увеличению количества битов двоичного числа с сохранением знака числа (положительный/отрицательный) и значения. Это делается путем добавления цифр к старшей значащей стороне числа в соответствии с процедурой, зависящей от конкретного используемого представления числа со знаком .

Например, если для представления числа " 00 1010" (десятичное положительное число 10) используется шесть бит, а операция расширения знака увеличивает длину слова до 16 бит, то новое представление будет просто " 0000 0000 0000 1010". Таким образом, сохраняются как значение, так и тот факт, что значение было положительным.

Если десять бит используются для представления значения " 11 1111 0001" (десятичное отрицательное 15) с использованием дополнения до двух , и этот знак расширен до 16 бит, новое представление будет " 1111 1111 1111 0001". Таким образом, путем дополнения левой стороны единицами отрицательный знак и значение исходного числа сохраняются.

Например, в наборе инструкций Intel x86 есть два способа выполнения знакового расширения:

Нулевое расширение

Аналогичная концепция — нулевое расширение (иногда сокращенно zext ). В операции перемещения или преобразования нулевое расширение означает установку старших битов назначения в ноль, а не установку их в копию самого старшего бита источника. Если источником операции является беззнаковое число, то нулевое расширение обычно является правильным способом переместить его в большее поле, сохраняя его числовое значение, в то время как знаковое расширение является правильным для знаковых чисел.

В наборах инструкций x86 и x64 movzxэту функцию выполняет инструкция («переместить с нулевым расширением»). Например, movzx ebx, alкопирует байт из alрегистра в младший байт ebxи затем заполняет оставшиеся байты ebxнулями.

На x64 большинство инструкций, которые записывают в нижние 32 бита любого регистра общего назначения, обнулят верхнюю половину регистра назначения. Например, инструкция mov eax, 1234очистит верхние 32 бита регистра rax[a] .

Смотрите также

Ссылки

Примечания

  1. ^ RAX - 64-битный аккумулятор