Ir para conteúdo

  • Entrar usando o Facebook Entrar usando o Twitter Entrar usando o Windows Live Login com Steam Login com Google      Entrar   
  • Cadastre-se

Ícone Classificados

Adicionar um Anúncio

Redes Sociais

Membros mais bem avaliados

Membros VIP mais recentes


Foto
- - - - -

Como faço para converter binario em decimal no C#!!!!


Este tópico foi arquivado. Isto significa que você não pode mais responder ao tópico.
6 respostas neste tópico

#1 adler_coelho16

adler_coelho16
  • Membros Plenos
  • 267 posts
  • Membro desde 15/08/2009
0
Neutra

Postado 23 de março de 2010 - 04h54min

Tenho q fazer um programa no C# que converta números binários em decimais.Se o usuário digitar menos ou mais de oito caracteres, o programa tem que informar mensagem dizendo q são 8 numeros.E se o usuario digitar, por exemplo, "54931010" ....o programa tem q mandar uma mensagem dizendo q só podem ser digitados 1 e 0.

Adler Coelho Santos

#2 H1GHL4ND3R

H1GHL4ND3R
  • Membros Plenos
  • 196 posts
  • Membro desde 15/03/2006
1
Neutra

Postado 23 de março de 2010 - 13h50min

Sub-Forum errado, aqui é C/C++
C# é abordado no .Net


Estatísticas no Folding @ Home:

#3 adler_coelho16

adler_coelho16
  • Membros Plenos
  • 267 posts
  • Membro desde 15/08/2009
0
Neutra

Postado 23 de março de 2010 - 20h42min

valeu pelo aviso...não tinha percebido.:D

Adler Coelho Santos

#4 giovannifilipe

giovannifilipe
  • Membros Plenos
  • 1.705 posts
  • Membro desde 20/12/2005
2
Neutra

Postado 23 de março de 2010 - 23h13min

Tenho q fazer um programa no C# que converta números binários em decimais.Se o usuário digitar menos ou mais de oito caracteres, o programa tem que informar mensagem dizendo q são 8 numeros.E se o usuário digitar, por exemplo, "54931010" ....o programa tem q mandar uma mensagem dizendo q só podem ser digitados 1 e 0.



Você não sabe a lógica do programa, ou escrever o programa em C#?
Qual sua dúvida?


Abs

[URL="http://forum.clubedohardware.com.br/tutorial-super-aquecimento-t350814.html"][/URL]

#5 adler_coelho16

adler_coelho16
  • Membros Plenos
  • 267 posts
  • Membro desde 15/08/2009
0
Neutra

Postado 23 de março de 2010 - 23h34min

eu num sei a logica

Adler Coelho Santos

#6 adler_coelho16

adler_coelho16
  • Membros Plenos
  • 267 posts
  • Membro desde 15/08/2009
0
Neutra

Postado 24 de março de 2010 - 19h37min

Por favor, me ajudemmmm????

Adler Coelho Santos

#7 H1GHL4ND3R

H1GHL4ND3R
  • Membros Plenos
  • 196 posts
  • Membro desde 15/03/2006
1
Neutra

Postado 26 de março de 2010 - 12h00min

vamos lá, nunca programei em C# não conheço o que a linguagem permite fazer com strings então vou escrever algum exemplo em C

captura a entrada e joga em uma string no caso de C

char num[9];

primeira coisa é captura e validação dos dados

scanf("%8s", num);
if(strlen(num) != 8) // verifica se tem 8 caracteres o numero
printf("Erro!\n");

for(i = strlen(num); i >= 0 && (num[i] == '0' || num[i] == '1' ); i--); // percorre a string checando se possui apenas os valores 0 e 1
if(i >= 0) // se só posuir 0 e 1, o for só irá parar quando i for menor que 0
printf("Erro!\n");


agora vem a mágica que você empacou (pelo - eu acho que foi aqui)
converter o numero 1111 1111 para 255
em C eu provavelmente converteria o valor de cada caracter para numero faria um shiftleft nos bits e os combinaria com um OR
mas em linguagens de + alto nivel, fazer tal coisa ia ser no mínimo difícil

então vamos fazer o que seu Prof. quer, esse problema é bem parecido com aqueles de Calculo de CPF (particularmente CPF é + difícil) em compensação ele exige que você se lembre, das aulinhas de calculo de numeros binarios vamos relembrar, é o teorema fundamental da Numeração (ask google)

em resumo, cada posição entre os bits tem um valor correspondente em decimal (o teorema calcula e soma tudo) no caso dos 8 bits os valores são
128 64 32 16 8 4 2 1
1 1 1 1 1 1 1 1

esse foi o exemplo que dei acima (todos os bits em 1) vale 255 vamos fazer a soma
1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 = 255
pelo teorema fundamental a formula que teriamos seria + ou - assim
1*1 + 1*2 + 1*4 + 1*8 + 1*16 + 1*32 + 1*64 + 1*128 = 255
se tivéssemos o numero 0111 1111 o resultado seria = 127
pelo teorema
1*1 + 1*2 + 1*4 + 1*8 + 1*16 + 1*32 + 1*64 + 0*128 = 127
repare que o BIT que representa o 128 esta desligado. por isso 0*128 = 0

podemos reescrever esse procedimento em linguagem de programação
em C:

int valorBit = 1;
int i;
int resultado = 0;
for(i = 8; i >= 0; i--){
resultado += ((unsigned char) (num[i] - '0')) * valorBit;
valorBit *= 2;
}
basicamente pego o caracter na ultima posição da string converto pra numero (num[i] - '0', conversão porca eu sei) e multiplico pelo valor do "BIT" em questao, e acumulo em resultado
depois multiplico o valorBit por 2 para reproduzir a serie de numeros (1 2 4 8 16...)

bem amigo fui bem passo a passo, espero ter dado 1 luz na teoria do que você tem de fazer, agora basta adaptar a lógica para C#


Estatísticas no Folding @ Home: