Articulo de referencia

Extensión de letrero

La extensión de signo (a veces abreviada como sext , especialmente en mnemotecnia ) es la operación, en aritmética computacional , de aumentar el número de bits de un número bin...

La extensión de signo (a veces abreviada como sext , especialmente en mnemotecnia ) es la operación, en aritmética computacional , de aumentar el número de bits de un número binario conservando su signo (positivo/negativo) y valor. Esto se logra añadiendo dígitos al lado más significativo del número, siguiendo un procedimiento que depende de la representación numérica con signo utilizada.

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 conservan 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 menos 15) usando complemento a dos , y esto 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 mantienen el signo negativo y el valor del número original.

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

  • utilizando las instrucciones cbw, cwd, cwde, y cdq: convierte el byte en palabra, palabra en doble palabra, palabra en doble palabra extendida y doble palabra en cuádruple palabra, respectivamente (en el contexto x86 un byte tiene 8 bits, una palabra 16 bits, una doble palabra y una doble palabra extendida 32 bits y una cuádruple palabra 64 bits);
  • utilizando uno de los movimientos con extensión de signo, que se realizan mediante la movsxfamilia de instrucciones ("mover con extensión de signo").

Extensión cero

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

En los conjuntos de instrucciones x86 y x64, la movzxinstrucción ("mover con extensión de cero") realiza esta función. Por ejemplo, movzx ebx, alcopia un byte del alregistro al byte de orden inferior de ebxy luego rellena los bytes restantes 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

  • Mano, Morris M.; Kime, Charles R. (2004). Fundamentos de lógica y diseño de computadoras (3.ª ed.), pp. 453. Pearson Prentice Hall. ISBN 0-13-140539-X.

Notas