2012-10-10 14 views
6

encuentro en la norma:¿El estándar C++ requiere una máquina binaria?

Las representaciones de tipos integrales deberán definir los valores mediante el uso de un sistema de numeración binario puro

Pero mi opinión es que esto no es un requisito que C++ debe estar implementado en máquinas que se basan en la base 2 en hardware; en otras palabras, esto parece ser solo un requisito de lo que el programador debe ver.

¿El estándar C++ requiere una CPU binaria, o podría implementarse una implementación C++ válida en máquinas ternarias o decimales?


pequeña información de fondo: en la historia, ya ha habido ordenadores con decimales, ternarios, o equipos en un byte C++ sería de 36 bits de longitud (PDP-10)

+0

No veo por qué no. – cdhowie

+0

Es difícil ver cómo, p. los operadores bit a bit trabajarían en una arquitectura no binaria, a menos que tenga algún tipo de máquina virtual binaria en el medio, en cuyo caso la arquitectura subyacente es irrelevante. –

+1

Ese pasaje en el estándar me parece bastante claro. Requiere una máquina capaz de hacer representaciones binarias de números. En otras palabras, una computadora digital moderna típica, o al menos una que pueda emular números binarios. –

Respuesta

6

Aunque nunca se establecido directamente en el estándar, existe una regla "como si" que se aplica esencialmente a todos los requisitos del estándar C++ (y C).

En otras palabras, puede romper cualquier regla que desee, siempre y cuando produzca los mismos efectos observables externamente que si hubiera seguido la regla como se establece. Aunque no se menciona en los estándares, esta regla es explícitamente establecida en el Rationale para el estándar C. Hasta donde yo sé, no existe un razonamiento coincidente para el estándar de C++, pero los dos están lo suficientemente relacionados como para que vea un pequeño problema al aplicar la regla a ambos.

+1

Creo que hay una nota al pie que menciona" como-si "en 1.9.1. –

+0

No conozco las normas anteriores, pero en C++ 11 § 1.9/1 esto se establece directamente: 'Las descripciones semánticas en esta norma internacional definen una máquina abstracta no determinista parametrizada. Esta Norma Internacional no exige ningún requisito sobre la estructura de implementaciones conformes. En particular, no necesitan copiar o emular la estructura de la máquina abstracta. Por el contrario, se requieren implementaciones adecuadas para emular (solo) el comportamiento observable de la máquina abstracta como se explica a continuación. – JohnCand

Cuestiones relacionadas