pedrorissato
(usa Fedora)
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!!!!