O que os padrões C e C ++ dizem sobre a representação e manipulação de inteiros no nível de bits?

Eu sei que os padrões C e C ++ não ditam uma representação particular para números (pode ser o complemento de dois, sinal e magnitude, etc.). Mas eu não conheço bem os padrões (e não consegui encontrar se está indicado) para saber se existem restrições / garantias / representações reservadas em particular quando se trabalha com bits. Particularmente:

Se todos os bits em um tipo inteiro são zero, o inteiro como todo representa zero?Se algum bit em um tipo inteiro é um, o inteiro como um todo representa diferente de zero? (se isso é um "sim", então algumas representações como sinal e magnitude seriam adicionalmente restritas)Existe uma maneira garantida de verificar se algum bit não está definido?Existe uma maneira garantida de verificar se algum bit está definido? (# 3 e # 4 dependem do # 1 e # 2, porque eu sei como definir, por exemplo, o quinto bit (ver # 5) em alguma variávelxe gostaria de verificar uma variávely para ver se é 5 bit é 1, gostaria de saber seif (x & y) vai funcionar (porque, como eu entendo, isso depende do valor da representação e não se nem esse bit é realmente 1 ou 0))Existe uma maneira garantida de definir os bits mais à esquerda e / ou à direita? (Pelo menos uma maneira mais simples do quechar c com todos os bits verdadeiros (definidos porc = c | ~c) e fazendoc = c << (CHAR_BIT - 1) para definir o bit alto ec = c ^ (c << 1) para o bocado baixo, supondo que eu não estou fazendo nenhuma suposição que eu não deveria, dadas estas perguntas)Se a resposta para o nº 1 for "não", como poderia uma iterar os bits em um tipo inteiro e verificar se cada um deles era 1 ou 0?

Eu acho que a minha pergunta geral é: existem restrições / garantias / representações reservadas feitas pelos padrões C e C ++ em relação a bits e números inteiros, apesar do fato de que uma representação de um inteiro não é obrigatória (e se os padrões C e C ++ diferem a esse respeito? qual é a diferença deles?

Eu fiz essas perguntas enquanto fazia meu dever de casa, o que exigia que eu fizesse um pouco de manipulação (note que essas não são perguntas do meu dever de casa, são muito mais "abstratas").

Editar: Quanto ao que eu me refiro como "bits", quero dizer bits "formando valor" e não estou incluindo "preenchimento" bits.

questionAnswers(8)

yourAnswerToTheQuestion