Uma linguagem de programação possui um tipo primitivo de dados para armazenamento de valores inteiros utilizando sempre 2 bytes de memória. Considerando que armazena números inteiros positivos ou negativos, a faixa de valores inteiros que podem ser armazenados em variáveis desse tipo é de
- A)−32768 a 32767
Correta, pois 2 bytes correspondem a 16 bits e, em inteiro com sinal, a faixa usual e de -32768 a 32767.
- B)−128 a 127
Errada, porque essa faixa corresponde a um inteiro de 1 byte, ou seja, 8 bits.
- C)−2147483648 a 2147483647
Errada, porque essa faixa corresponde a um inteiro de 4 bytes, isto e, 32 bits.
- D)−2048 a 2047
Errada, porque essa faixa e pequena demais e nao corresponde a 2 bytes.
- E)−8388608 a 8388607
Errada, porque essa faixa corresponde a 3 bytes, ou seja, 24 bits, e nao a 2 bytes.
Gabarito: A
Quando uma linguagem reserva 2 bytes para um inteiro, voce tem 16 bits no total. Em armazenamento de inteiros positivos e negativos, o caso mais comum e o complemento de dois, em que um bit fica para o sinal e os demais representam o valor. Isso faz a faixa ir de -2^15 até 2^15 - 1, isto e, de -32768 a 32767. Perceba a conta: 16 bits geram 2^16 combinacoes, mas como o intervalo e simetrico de forma quase total por causa do zero, o maior positivo fica um a menos que o modulo do menor negativo. E por isso o intervalo nao vai de -32768 a 32768, nem de -32767 a 32767, porque sempre existe essa pequena assimetria nas representacoes assinadas. O gabarito A esta correto exatamente por traduzir 2 bytes = 16 bits para a faixa de inteiros com sinal mais classica em computacao. Em provas de concurso, quando a banca fala apenas em inteiro com sinal e nao detalha outra codificacao, a leitura padrao e complemento de dois.