Articulo de referencia

Signos

En informática, el signo es una propiedad de los tipos de datos que representan números en los programas de computadora. Una variable numérica es con signo si puede representar ...

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

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

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

En lenguajes de programación

En la mayoría de las arquitecturas, no existe una distinción entre tipos con y sin signo en el lenguaje máquina . Sin embargo, las instrucciones aritméticas suelen establecer diferentes indicadores de la CPU , como el indicador de acarreo para aritmética sin signo y el indicador de desbordamiento para aritmética con signo. Estos valores pueden ser tenidos en cuenta por las subsiguientes instrucciones de bifurcación o aritméticas.

El lenguaje de programación C , junto con sus derivados (excepto Java , que carece de tipos sin signo), implementa un signo para todos los tipos de datos enteros , así como para "caracter" . Para los enteros, el unsignedmodificador define el tipo como sin signo. El signo predeterminado de los enteros fuera de los campos de bits es con signo, pero se puede establecer explícitamente con signedel modificador. Por el contrario, el estándar C declara signed char, unsigned char, y char, como tres tipos distintos, pero especifica que los tres deben tener el mismo tamaño y alineación. Además, chardebe tener el mismo rango numérico que signed charo unsigned char, pero la elección de cuál depende de la plataforma. Los literales enteros se pueden hacer sin signo con el sufijo U.

Los compiladores suelen emitir una advertencia al comparar números con y sin signo, o al convertirlos de un tipo a otro. Estas operaciones pueden ser peligrosas, ya que los rangos de los tipos con y sin signo son diferentes.

Véase también

  • "Descripción general de los tipos numéricos" . Manual de referencia de MySQL 5.0 . mysql.com. 2011. Consultado el 6 de enero de 2012 .
  • "Comprender las reglas de conversión de enteros" , Estándar de codificación CERT C , Equipo de respuesta a emergencias informáticas , consultado el 31 de diciembre de 2015.