Enviado em 10/10/2013 - 23:57h
Olá a todos!!!!
Gostaria que alguém de vocês pudesse me ajudar em algo.
Estou fazendo uma conversão de número binário de 8bits para decimal.
Cada aluno tem feito do seu jeito, a maioria tem utilizado desta forma:
for(i = 1; n > 0; i*=2){
x = (n % 10) * i;
numeroDecimal += x;
n /= 10;
Queria fazer algo diferente, mas na minha cabeça ( xD ) mais fácil, gostaria de criar um vetor com 8 posições, armazenar cada digito binário dentro e depois, caso o digito fosse 1 atribuir um valor novo para aquela posição no vetor.
Utilização o método de conversão básico de binário para decimal:
Tabela: ... 128, 64, 32, 16, 8, 4, 2, 1
ex binário 0 0 1 1 0 1 0 1
Decimal = 53
Para isto criei um v[7] e estou colocando nele o número binário, depois jogo o número binário nele e depois faria um teste para verificar se o número eh 0 ou 1 e atribuir os valores da tabela, e por fim somaria os valores atribuídos, dando o número decimal.
Segue abaixo o código:
#include <stdio.h>
main(){
int y, numero;
int v[7];
printf("Entre com o numero binario ");
scanf("%d", &y);
v[7]=y;
if (v[0]==1)
v[0]=1;
if (v[1]==1)
v[1]=2;
if (v[2]==1)
v[2]=4;
if (v[3]==1)
v[3]=8;
if (v[4]==1)
v[4]=16;
if (v[5]==1)
v[5]=32;
if (v[6]==1)
v[6]=64;
if (v[7]==1)
v[7]=128;
//numero = v[0] + v[1] + v[2];
printf("%d\n", v[0]);
getchar();
}
Obviamente existem várias formas de fazer isto, contudo gostaria de fazer assim, mas existem (além de vários outros problemas que não enxergo) dois que consigo visualizar:
1) Neste exemplo de impressão da posição v[0] ele imprime o endereço da memória e não do vetor;
2) No v[7] obviamente ele vai substituir tudo do vetor, teoricamente.
Tentei trabalhar com ponteiros, mas somente tem funcionado se eu atribuir os elementos do vetor na variável v. Quanto peço pra entrar o numero e aponto os vetores, ele volta a printar o endereço da memória, mesmo com pointer *...
Se alguém puder ajudar, eu agradeço xD!!!!
Gostaria que alguém de vocês pudesse me ajudar em algo.
Estou fazendo uma conversão de número binário de 8bits para decimal.
Cada aluno tem feito do seu jeito, a maioria tem utilizado desta forma:
for(i = 1; n > 0; i*=2){
x = (n % 10) * i;
numeroDecimal += x;
n /= 10;
Queria fazer algo diferente, mas na minha cabeça ( xD ) mais fácil, gostaria de criar um vetor com 8 posições, armazenar cada digito binário dentro e depois, caso o digito fosse 1 atribuir um valor novo para aquela posição no vetor.
Utilização o método de conversão básico de binário para decimal:
Tabela: ... 128, 64, 32, 16, 8, 4, 2, 1
ex binário 0 0 1 1 0 1 0 1
Decimal = 53
Para isto criei um v[7] e estou colocando nele o número binário, depois jogo o número binário nele e depois faria um teste para verificar se o número eh 0 ou 1 e atribuir os valores da tabela, e por fim somaria os valores atribuídos, dando o número decimal.
Segue abaixo o código:
#include <stdio.h>
main(){
int y, numero;
int v[7];
printf("Entre com o numero binario ");
scanf("%d", &y);
v[7]=y;
if (v[0]==1)
v[0]=1;
if (v[1]==1)
v[1]=2;
if (v[2]==1)
v[2]=4;
if (v[3]==1)
v[3]=8;
if (v[4]==1)
v[4]=16;
if (v[5]==1)
v[5]=32;
if (v[6]==1)
v[6]=64;
if (v[7]==1)
v[7]=128;
//numero = v[0] + v[1] + v[2];
printf("%d\n", v[0]);
getchar();
}
Obviamente existem várias formas de fazer isto, contudo gostaria de fazer assim, mas existem (além de vários outros problemas que não enxergo) dois que consigo visualizar:
1) Neste exemplo de impressão da posição v[0] ele imprime o endereço da memória e não do vetor;
2) No v[7] obviamente ele vai substituir tudo do vetor, teoricamente.
Tentei trabalhar com ponteiros, mas somente tem funcionado se eu atribuir os elementos do vetor na variável v. Quanto peço pra entrar o numero e aponto os vetores, ele volta a printar o endereço da memória, mesmo com pointer *...
Se alguém puder ajudar, eu agradeço xD!!!!