Ir ao conteúdo
  • Cadastre-se
Caius Carneiro

C++ Código em c++ decimal para binário

Recommended Posts

Boa tarde, sou iniciante em programação e estou com dificuldades na resolução dessa questão. Ela é um pouco extensa, mas se alguém puder ajudar eu agradeço muito.

 

Questão 9. Uma maneira simples de se converter um número inteiro para sua forma binária é utilizar subtrações sucessivas. Para tanto, subtrai-se do número a maior potência 2^p que se pode subtrair do mesmo. número em questão quando em forma binária possuirá um bit 1 na posição p. O processo é então aplicado sucessivamente ao resto da subtração anterior até que o resto se torne zero. As posições p das potências 2^p que foram subtraídas nesse processo serão os bits 1 do número e todas as demais serão zero. Além disso, qualquer potência 2p maior que o número também será um zero. Assim, se 89 for um inteiro de 8 bits teremos também que a posição 7 será 0, pois 2^7 > 89 e teremos 89 - 2^6 = 25, 25 - 2^4 = 9, 9 - 2^3 = 1 e 1 - 2^0 = 1, de modo que os bits das posições 0, 3, 4, e 6 serão 1 e os bits das posições 1, 2, 5 e 7 serão 0. Logo, temos que 8910 = 010110012.

Escreva um programa em C++ que leia um inteiro de 16 bits e o imprima em formato binário usando o método descrito acima. Observe que a maior potência de 2 presente em um número de 16 bits é 2^15. Você precisará utilizar a estrutura condicional if...else neste programa. O programa pode ser escrito de forma curta usando a estrutura de repetição for( ; ; ).

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá tudo explicado já. fácil d+, só se não aprendeu a escrever em C. Se esse é o caso. Tem ótimos livros gratuitos na internet vai buscar.

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Caius Carneiro     para converter de decimal para binário você precisa usar o comando mod que em c / c++   é   % , então você precisa criar um vetor com 16 posições para armazenar o número convertido , e depois de pegar o número decimal coloque um while assim :

j=15;
while(decimal > 0){
    if(decimal % 2 == 0)
        vetor[j]=0;
    else
        vetor[j]=1;
    j--;
    decimal /= 2;
}

com isso é só imprimir usando um for de zero até enquanto for menor que 16 ,

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010, pois é cara, boa noite. É que seria mais interessante e didático se a questão pudesse ser resolvida utilizando o método que a própria questão dá. Entende? O das subtrações sucessivas.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @Caius Carneiro.

 

10 horas atrás, Caius Carneiro disse:

@devair1010, pois é cara, boa noite. É que seria mais interessante e didático se a questão pudesse ser resolvida utilizando o método que a própria questão dá. Entende? O das subtrações sucessivas.

 

Então, não é uma questão de interessionismo ou didaticimos, mas sim de obrigatoricismo mesmo... ou seja, tem que ser feito da forma que foi pedida. Ponto!

 

Em 16/03/2018 às 12:09, Caius Carneiro disse:

Escreva um programa em C++ que leia um inteiro de 16 bits e o imprima em formato binário usando o método descrito acima

 

Qual método?

Em 16/03/2018 às 12:09, Caius Carneiro disse:

Uma maneira simples de se converter um número inteiro para sua forma binária é utilizar subtrações sucessivas [...]

 

Então, a solução "dada" por @devair1010 não serve para o seu caso. A questão principal não é o resultado em si, mas sim o método para chegar ao resultado (que por coerência deve ser correto também).

 

 

Minha sugestão seria a seguinte: tente resolver esse problema mentalmente... utilize um papel e caneta para auxiliar nos cálculos... ou seja, sem envolver uma linguagem de programação específica. O C++ ou qualquer outra linguagem entre apenas para automatizar.

 

Mais pra frente, converte para C++, ou seja, sua preocupação no momento é tentar entender o enunciado e seguir o passos... passar para C++ é a parte mais fácil, mas é posterior!!!

 

 

No aguardo.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Simon Viegas Exatamente, vou tentar esse método para resolver próximos exercícios. Sempre encontro dificuldade em entender esse tipo de questão envolvendo aritmética e álgebra. Quanto a questão acima, consegui resolvê-la com a ajuda de alguns amigos. Muito obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×