stringtranslate.com

Firma

En informática, la firma es una propiedad de los tipos de datos que representan números en programas de computadora. Una variable numérica tiene signo si puede representar números positivos y negativos , y no tiene signo si solo puede representar números no negativos (cero o números positivos).

Como los números con signo pueden representar números negativos, pierden un rango de números positivos que solo se pueden representar con números sin signo del mismo tamaño (en bits) porque aproximadamente la mitad de los valores posibles son valores no positivos, mientras que el tipo sin signo respectivo puede dedicar todos los valores posibles al rango de números positivos.

Por ejemplo, un entero de 16 bits con signo en complemento a dos puede contener los valores de −32768 a 32767 inclusive, mientras que un entero de 16 bits sin signo puede contener los valores de 0 a 65535 . Para este método de representación de signos , el bit más a la izquierda ( bit más significativo ) indica si el valor es negativo (0 para positivo o cero, 1 para negativo).

En lenguajes de programación

Para la mayoría de las arquitecturas, no existe una distinción de tipos con y sin signo en el lenguaje de máquina . Sin embargo, las instrucciones aritméticas generalmente establecen diferentes indicadores de CPU , como el indicador de acarreo para aritmética sin signo y el indicador de desbordamiento para aritmética con signo. Esos valores se pueden tener en cuenta mediante comandos de rama o aritméticos posteriores.

El lenguaje de programación C , junto con sus derivados, implementa un signo para todos los tipos de datos enteros , así como para los "carácter" . Para enteros, el modificador sin signo define el tipo que no estará firmado. El signo del entero predeterminado es con signo, pero se puede establecer explícitamente con un modificador con signo . Por el contrario, el estándar C declara char firmado , char unsigned y char como tres tipos distintos, pero especifica que los tres deben tener el mismo tamaño y alineación. Además, char debe tener el mismo rango numérico que el char firmado o el char sin firmar , pero la elección depende de la plataforma. Los literales enteros se pueden convertir en sin signo con el sufijo U.

Los compiladores suelen emitir una advertencia cuando se realizan comparaciones entre números con y sin signo o cuando uno se convierte en el otro. Estas son operaciones potencialmente peligrosas ya que los rangos de los tipos con y sin signo son diferentes.

Ver también

enlaces externos