Por que não aplicar o complemento 2 em C ++?
O novo padrão C ++ ainda se recusa a especificar a representação binária de tipos inteiros. Isso ocorre porque existem implementações do C ++ no mundo real que não usam a aritmética de complemento de 2? Acho isso difícil de acreditar. É porque o comitê temia que futuros avanços no hardware tornassem obsoleta a noção de 'bit'? Mais uma vez difícil de acreditar. Alguém pode esclarecer isso?
Fundo Fiquei surpreso duas vezes em um tópico de comentário (resposta de Benjamin Lindley paraessa questã). Primeiro, pelo comentário de piotr:
mudança à direita no tipo assinado é um comportamento indefinid
Segundo, do comentário de James Kanze:
quando atribuir a um longo, se o valor não couber em um longo, os resultados são definidos pela implementação
Eu tive que procurar esses no padrão antes de acreditar neles. A única razão para eles é acomodar representações inteiras que não sejam complemento de 2's. PORQUE