Pular para o conteúdo principal

Por que (byte) 157 = -99? Parte 3 de 3

Depois de falar sobre a conversão entre as bases binária e decimal na primeira parte deste artigo e sobre a representação de inteiros em Java na segunda parte, finalmente, trataremos da conversão (cast) de tipos primitivos, e conseguiremos entender efetivamente Por que (byte) 157 = -99?

Conversão de tipos primitivos inteiros


Para responder a pergunta do título, vamos precisar saber o número de bits/bytes utilizados para representar cada um dos tipos primitivos inteiros na Plataforma Java.

O tipo byte ocupa 1 byte ou 8 bits
O tipo short ocupa 2 bytes ou 16 bits
O tipo int ocupa 4 bytes ou 32 bits
O tipo long ocupa 8 bytes ou 64 bits

Então vamos observar a mensagem que se obtém ao tentar compilar o seguinte código:
public class TesteConversao {
public static void main(String[] args) {
int inteiro = 157;
byte b = inteiro;
}
}
A mensagem apresentada é:

TesteConversao.java:4: possible loss of precision
found : int
required: byte
byte b = inteiro;
^
1 error

A referida perda de precisão acontece devido aos 8 bits do tipo byte não comportarem os 32 bits do tipo int. Esta atribuição pode ser realizada, com perda dos primeiros 24 bits, mediante a realização de cast explícito, conforme código abaixo:

public class TesteConversao {
public static void main(String[] args) {
int inteiro = 157;
byte b = (byte) inteiro; // cast explícito
}
}

Como calculado na primeira parte do artigo a representação de 157 na base decimal é equivalente a 1001 1101 em binário, e como visto na segunda parte para obter a representação deste valor no tipo int (4 bytes) basta preencher os bits a esquerda com zero, resultando em 0 000 0000 0000 0000 0000 0000 1001 1101 agora vamos realizar o cast deste valor para byte desprezando os primeiros 24 bits, e realizar a conversão do valor resultante para a base decimal.
0 000 0000 0000 0000 0000 0000 1001 1101
Desprezando os primeiros 24 bits
1001 1101

Para realizar a conversão precisamos inicialmente verificar o bit de sinal, primeiro bit, e:
  • sendo 0 (zero), o número é positivo, e basta realizar conversão dos bits de valor para a base decimal, conforme apresentado na primeira parte deste artigo
  • sendo 1 (um), o número é negativo, e precisamos subtrair 1 (um) dos bits de valor, inverter os bits resultantes, calcular o número correspondente na base decimal, e lembrar que o mesmo é negativo.
Dito isto, vamos converter 1001 1101 para a base 10

Dado que em 1001 1101 o bit de sinal é negativo,
Como dito anteriormente, devemos realizar as seguintes etapas:
Subtrair 1 (um) dos bits de valor:
001 1101 – 1 = 001 1100
Inverter os bits resultantes:
~(001 1100) = 110 0011
Converter para base decimal:
1 x 26 = 64
1 x 25 = 32
0 x 24 = 0
0 x 23 = 0
0 x 22 = 0
1 x 21 = 2
1 x 20 =1
64 + 32 + 0 + 0 + 0 + 2 + 1 = 99
Lembrar que o mesmo é negativo:
-99

Exercite a conversão, realize o cálculo do cast de 190 para byte e use o código apresentado abaixo para verificar.
public class TesteConversao {
public static void main(String[] args) {
System.out.println((byte)190);
}
}
Espero que esta sequência de posts tenha sido esclarecedora e possa ter contribuído para o entendimento da Plataforma Java.

Até mais!
Marcelo de Castro
http://twitter.com/mcastroinfo
http://www.globalcode.com.br/instrutores/MarceloCastro

Comentários

Postagens mais visitadas deste blog

Você já pensou em ser palestrante em algum evento ?

Você já deve ter participado de algum evento e pensado como deve ser legal ser palestrante... E para falar a verdade, é muito bom mesmo. Eu adoro, o Vinicius adora e conheço muitas pessoas que curtem cada minuto da participação no evento como palestrante. Com certeza é uma responsabilidade a mais. Você sente medo, adrenalina, tem que se preparar. Literalmente coloca a cara a tapa para qualquer pessoa te avaliar em todos os sentidos. Qual o seu tom de voz?  Seus slides são legais? Você manja mesmo ?  Seu português está ok?  E as palavras em inglês ?  Teve algum deslize técnico? E MUITO mais.  Mas é claro que a exposição tem dois lados... e os resultados podem ser ótimos. Normalmente conhecemos mais pessoas como palestrantes e podem surgir boas oportunidades de negócio. É sempre positivo ter uma nova referência positiva quando as pessoas buscam nosso nome no Google, podemos fazer a diferença para quem está assistindo a palestra e muito mais.  No The Developer's

TDC ONLINE: SUA PLATAFORMA DE PALESTRAS GRAVADAS DO TDC DISPONÍVEL

Além do conteúdo ao vivo transmitido online nas edições do TDC, agora você pode ter acesso à centenas de palestras gravadas, através da nossa nova plataforma de vídeos - o TDC Online, que reúne todas as Trilhas premium, Stadium e Salas dos Patrocinadores das edições anteriores de 2022, TDC Innovation e TDC Connections.  Para acessar, basta clicar na edição em que você participou ( TDC Innovation ou TDC Connections ); Fazer o mesmo login (com e-mail e senha) cadastrados na hora de adquirir ou resgatar o seu ingresso no TDC; E clicar na Trilha de sua opção, e de acordo com a modalidade do seu ingresso. Logo em seguida, você será direcionado para a seguinte página com a lista de todas as palestras por Trilha: Pronto! Agora você tem acesso à centenas de palestras gravadas da sua área de interesse, para assistir como e quando quiser! Caso tenha esquecido a senha, clique na opção "Esqueci a senha" , insira o e-mail que você realizou para o cadastro no evento, e aparecerá a op

TDC INNOVATION lança University Pass

Modalidade de ingresso tem como objetivo ajudar na capacitação dos universitários Uma pesquisa realizada em 2020 pela Associação Brasileira das Empresas de Tecnologia da Informação e Comunicação (Brasscom) diz que até o ano de 2024 o Brasil precisará de cerca de 420 mil profissionais na área de Tecnologia da Informação. Porém, por ano, a mesma pesquisa diz que o país forma apenas 46 mil profissionais capacitados no nicho. Pensando nisso, para ajudar na formação e capacitação desses jovens profissionais, o TDC INNOVATION, segunda edição do ano do The Developer's Conference, lança o University Pass, modalidade de ingresso que possibilita aceso digital gratuito a todas as palestras do evento, ou com 50% de desconto para quem preferir ir pessoalmente. Com o tema central “Desafios para a criação do futuro Digital”, o TDC INNOVATION ocorrerá entre 1 e 3 de junho, de forma híbrida: presencialmente no Centro de Convenções CentroSul, em Florianópolis, e com transmissão simultaneamente pela

TDC Digital: o que você precisa saber para transformar sua carreira em 2022

O TDC Digital é o maior evento de TI do mercado e proporciona crescimento profissional a partir de palestras com especialistas e oportunidades de networking com o mundo todo, direto da sua casa. Através da escolha individual de cada participante é possível obter experiências imersivas e transformadoras conforme o tema-chave de cada trilha.  O evento também é o lugar ideal para ajudar no desenvolvimento de carreiras, permitindo que qualquer pessoa com vontade — e um tema interessante — seja palestrante e compartilhe suas experiências e conhecimentos. Para aqueles que querem  participar como ouvinte a plataforma do TDC favorece conferências dinâmicas, e o encontro de diversas comunidades e ecossistemas de TI. E, após a escolha de uma trilha, fica mais fácil acompanhar especialistas para aprender e se inspirar. Em 2021, o The Developer’s Conference (TDC) foi 100% digital e, em três dias de evento, contou com mais de 300 horas de conteúdos , incluindo: Agile; Testes; Design; Web e Mobile;

Segurança da informação no alvo: o que esperar do futuro?

A segurança da informação não se trata apenas de proteger os dados contra acesso não autorizado. Na prática, refere-se aos recursos que impedem: uso; registro; inspeção; divulgação; interrupção; modificação; destruição de dados. O uso de dados pode abranger desde um perfil nas redes sociais a detalhes financeiros, biometrias ou novos projetos. Por isso, a preocupação com a proteção dos dados é crescente, tanto para empresas quanto clientes. Para muitas pessoas, a coleta de dados é considerada invasão de privacidade, criando desconfiança do titular dos dados, pois o uso dos dados pode ser facilmente corrompido, utilizado para fins não declarados. Apesar de o uso dos dados terem impulsionado os avanços tecnológicos na última década, as organizações lidam com o desafio de distinguir dados de informações pessoais de modo a proteger a privacidade e as preferências dos clientes. Neste artigo, abordaremos o impacto da segurança da informação e o que esperar do futuro. Confira casos conhecido

Inspire a mudança com a liderança ágil

A liderança ágil é essencial para que uma organização realize mudanças de negócios significativas. Ser líder é uma tarefa desafiadora, especialmente em um cenário de constantes transformações, principalmente na forma de lidar com a relação empresa e pessoal. Pesquisas sobre liderança na era digital revelam que algumas soft skills têm sido substituídas por outras, o profundo conhecimento na área de negócio, ser referência nas tecnologias utilizadas, ter foco total no prazo e nas entregas e conhecer um arsenal de técnicas e ferramentas, têm dado espaço a habilidades, como: empatia; adaptabilidade; visão e propósito; engajamento constante; senso de equipe.   A colaboração entre pessoas de todos os níveis hierárquicos são vitais, afinal, as equipes estão trabalhando para o mesmo objetivo: o encantamento e atendimento das necessidades do cliente que proporcionarão um crescimento sustentável da organização. Com propósito claro, estratégia e prioridades definidas, os times desfrutam de uma