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

Membros VIP mais recentes

Redes Sociais

Membros mais bem avaliados

Atualizações recentes de status

  • Foto
    Algus

    Aécio acaba de assumir que contará com Armínio Fraga na política econômica. Já sabemos quais "medidas impopulares" ele falava. Depois vai aparecer gente chorando as pitangas aqui por causa de salário e desemprego.

Visualizar Todas Atualizações

Aniversariantes de Hoje


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: