Pregunta

Hace poco estaba confundido por esta pregunta . Tal vez porque no he leído especificaciones del lenguaje (que es mi culpa, lo sé).

estándar C99 no dice qué números negativos representación debe ser utilizado por el compilador. Siempre pensé que la única manera correcta de almacenar los números negativos es el complemento a dos (en la mayoría de los casos).

Así que aquí está mi pregunta: ¿Cómo sabes cualquier compilador de hoy en día que implementa por el complemento por defecto de uno o firmar grados de magnitud representación? Podemos cambiar la representación por defecto con algún indicador del compilador?

¿Cuál es la forma más sencilla de determinar qué representación se utiliza?

Y qué decir de C ++ estándar?

¿Fue útil?

Solución

Creo que no es tanto una cuestión de lo que la representación utiliza el compilador, sino más bien lo que la representación utiliza la máquina subyacente. El compilador sería muy tonto para recoger una representación no es compatible con el equipo de destino, ya que introduciría un montón de gastos generales para ningún beneficio.

Algunos campos de suma de comprobación en el uso conjunto de protocolos IP complemento a uno, por lo que quizás dedicado "a la red del acelerador" de tipo de CPU:. S implementarlo

Otros consejos

representación

complemento a dos es, con mucho, el más común, no es el único ( ver algunos ). Los comités de normalización C y C ++ no desea que sea necesario máquinas no de complemento a dos para emular una representación no nativo. Por lo tanto ni C no C ++ requiere un formato de número entero negativo específico.

Esto nos lleva al comportamiento indefinido de operaciones bit a bit en tipos firmados.

El UNISYS 2200 serie que pone en práctica uno de matemáticas del complemento, se encuentra todavía en utilizar. Puede leer más sobre esto en las siguientes preguntas

arquitecturas exóticas los comités de normalización se preocupan por

¿Hay algunas implementaciones no de complemento a dos de C?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top