stringtranslate.com

Extensión de señal

La extensión de signo (a veces abreviada como sext , particularmente en mnemotecnia ) es la operación, en aritmética informática , de aumentar el número de bits de un número binario mientras se conserva el signo (positivo/negativo) y el valor del número. Esto se hace agregando dígitos al lado más significativo del número, siguiendo un procedimiento que depende de la representación particular del número con signo que se use.

Por ejemplo, si se utilizan seis bits para representar el número " 00 1010" (decimal positivo 10) y la operación de extensión de signo aumenta la longitud de la palabra a 16 bits, entonces la nueva representación es simplemente " 0000 0000 0000 1010". De esta manera, se mantienen tanto el valor como el hecho de que el valor era positivo.

Si se utilizan diez bits para representar el valor " 11 1111 0001" (decimal negativo 15) mediante complemento a dos , y este signo se extiende a 16 bits, la nueva representación es " 1111 1111 1111 0001". Por lo tanto, al rellenar el lado izquierdo con unos, se conserva el signo negativo y el valor del número original.

En el conjunto de instrucciones Intel x86 , por ejemplo, hay dos formas de realizar la extensión de signo:

Extensión cero

Un concepto similar es la extensión de cero (a veces abreviada como zext ). En una operación de movimiento o conversión, la extensión de cero se refiere a establecer los bits altos del destino en cero, en lugar de establecerlos en una copia del bit más significativo del origen. Si el origen de la operación es un número sin signo, entonces la extensión de cero suele ser la forma correcta de moverlo a un campo más grande mientras se conserva su valor numérico, mientras que la extensión de signo es correcta para los números con signo.

En los conjuntos de instrucciones x86 y x64, la movzxinstrucción ("mover con extensión cero") realiza esta función. Por ejemplo, movzx ebx, alcopia un byte del alregistro al byte de orden inferior de ebxy luego llena los bytes restantes de ebxcon ceros.

En x64, la mayoría de las instrucciones que escriben en la totalidad de los 32 bits inferiores de cualquiera de los registros de propósito general pondrán a cero la mitad superior del registro de destino. Por ejemplo, la instrucción mov eax, 1234borrará los 32 bits superiores del registro rax[a] .

Véase también

Referencias

Notas

  1. ^ RAX - acumulador de 64 bits