tipo tamaño maximo long c#

tamaño - short c#



¿Por qué los bytes en c#se denominan byte y sbyte a diferencia de otros tipos integrales? (2)

La razón por la que un tipo "byte", sin ningún otro adjetivo, a menudo no está firmado, mientras que un tipo "int", sin ningún otro adjetivo, está a menudo firmado, es que los valores de 8 bits sin signo son a menudo más prácticos (y por lo tanto ampliamente utilizados) que Bytes con signo, pero los enteros con signo de tipos más grandes suelen ser más prácticos (y, por lo tanto, ampliamente utilizados) que los enteros sin signo de tales tipos.

Existe un principio lingüístico común que, si una "cosa" viene en dos tipos, "usual" e "inusual", el término "cosa" sin un adjetivo significa "cosa usual"; El término "cosa inusual" se utiliza para referirse al tipo inusual. Siguiendo ese principio, dado que las cantidades de 8 bits sin firmar son más utilizadas que las firmadas, el término "byte" sin modificadores se refiere al sabor sin signo. A la inversa, dado que los enteros con signo de tamaños más grandes se usan más ampliamente que sus equivalentes sin signo, los términos como "int" y "largo" se refieren a los sabores con signo.

En cuanto a la razón detrás de estos patrones de uso, si uno está haciendo cálculos matemáticos en números de un tamaño determinado, generalmente no importará, aparte de las comparaciones, si los números están firmados o no. Hay momentos en que es conveniente considerarlos como firmados (es más natural, por ejemplo, decir pensar en términos de sumar -1 a un número que sumar 65535), pero en su mayor parte, declarar que los números están firmados no requiere cualquier trabajo adicional para el compilador, excepto cuando uno está realizando comparaciones o ampliando los números a un tamaño mayor. De hecho, en todo caso, las matemáticas de enteros con signo pueden ser más rápidas que las de enteros sin signo (ya que se requiere que las matemáticas de enteros sin signo se comporten de manera predecible en caso de desbordamiento, mientras que las matemáticas sin signo no lo son).

Por el contrario, dado que los operandos de 8 bits deben extenderse al tipo ''int'' antes de realizar cualquier cálculo matemático sobre ellos, el compilador debe generar un código diferente para manejar los operandos firmados y no firmados; en la mayoría de los casos, los operandos firmados requerirán más código que los no firmados. Por lo tanto, en los casos en los que no importaría si un valor de 8 bits se firmó o no se firmó, a menudo tiene más sentido utilizar valores sin signo. Además, los números de tipos más grandes a menudo se descomponen en una secuencia de valores de 8 bits o se reconstituyen a partir de dicha secuencia. Estas operaciones son más fáciles con tipos sin signo de 8 bits que con tipos con signo de 8 bits. Por estos motivos, entre otros, los valores de 8 bits sin firmar se utilizan con mucha mayor frecuencia que los valores de 8 bits con signo.

Tenga en cuenta que en el lenguaje C, "char" es un caso impar, ya que todos los caracteres dentro del conjunto de caracteres C deben traducirse como valores no negativos (por lo tanto, las máquinas que usan un tipo de carácter de 8 bits con un conjunto de caracteres EBCDIC son obligatorias). para que "char" no esté firmado), pero se requiere "int" para contener todos los valores que puede contener un "char" (por lo que las máquinas en las que tanto "char" como "int" son de 16 bits deben tener "char") firmado).

Estaba hojeando la especificación y descubrí que el byte es extraño. Otros son cortos, ushort, int, uint, long y ulong. ¿Por qué esta denominación de sbyte y byte en lugar de byte y ubyte?


Es una cuestión de semántica. Cuando piensas en un byte, por lo general (al menos yo) pienso en un valor de 8 bits de 0-255. Así que eso es lo que es el byte . La interpretación menos común de los datos binarios es un valor con sbyte ( sbyte ) de -128 a 127.

Con los enteros, es más intuitivo pensar en términos de valores firmados, de modo que eso es lo que representa el estilo de nombre básico. El prefijo u luego permite el acceso a la semántica no firmada menos común.