2012-05-18 5 views
5

MSDN:¿El número entero de .NET no está simplemente basado en el sistema de complemento de dos?

valores Int32 están representados en 31 bits, con el trigésimo segundo bit utilizado como un bit de signo. Los valores positivos se representan mediante el uso de la representación de signo y magnitud. Los valores negativos están en dos representaciones de complemento.

¿No es cierto que la representación de los valores positivos usando sign-and-magnitude system es idéntica a la representación de los valores positivos usando two's complement system?

Así que ¿no debería haber sido reescrita como: "valores Int32 (independientemente de positivo o negativo) están representados en la representación de complemento a dos",

o estoy malentendido algo?

+0

No, no lo creo, la razón por la que existe la representación de dos complementos es para respaldar operaciones básicas sobre valores negativos. 10000001 == -127, 00000001 == 1. Los valores int positivos no se representan con el sistema de complemento de dos – Polity

+0

sí, cuando se consideran números positivos, se debe tener en cuenta que el bit más alto no significa "más positivo". significa que cuando considera cualquier número, lo considera desde el punto de vista del complemento 2 y funcionará como positivo o negativo. –

Respuesta

6

Sí, estás en lo cierto. Deberían decir que usa un sistema complementario 2s, y luego se les da la definición sobre el uso de 31 bits, y en lugar de explicar los negativos como "complemento 2s" solo explican la representación de bits para los negativos. A continuación, den su advertencia sobre operadores bit a bit

Cuestiones relacionadas