Mostrando postagens com marcador Conversão. Mostrar todas as postagens
Mostrando postagens com marcador Conversão. Mostrar todas as postagens

9 de março de 2011

C# (Csharp) : Conversao de Decimal para Binario

Com tantas linguagens de programação a escolher, decidi mesmo encarar o C#(CSharp), pois vejo muitas vantagens nele. Estou trabalhando com o Visual Studio 2010 Professional, que também oferece muita facilidade na programação. A princípio, criei esse programa abaixo que converte um número Decimal para Binário, dê uma olhada:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Conversao_dec_binario
{
    class Program
    {
        static void Main(string[] args)
        {

            //criando variável quer receberá o valor digitado
            int numero;
            
             //Console.Write Imprime na tela uma aviso
            Console.Write("Digite um número..:");

            //onde vai ser recebido o valor digitado e armazenado na variável numero
            numero = int.Parse(Console.ReadLine());

            int[] v = new int[32];

            for(int i=0; i<32; i++)
            {
                v[i] = -1;
             }
           
            int index = 0;
            while(numero>0)
            {
                v[index]=numero%2;
                index++;
                numero=numero/2;
            }

            int j;
    
            for(j=index-1;j>=0;j--)
            {
                Console.Write(" "+v[j]);
            }

            //Console.ReadKey enquando não digitar qualquer tecla o programa não sai!
            Console.ReadKey();       
        }
    }
}

19 de outubro de 2010

Algoritmo e Programação: Conversão de Decimal para Binário


Parte Inteira

A conversão do número inteiro, de decimal para binário, será feita da direita para a esquerda, isto é, determina-se primeiro o algarismos das unidades ( o que vai ser multiplicado por 20 ) , em seguida o segundo algarismo da direita ( o que vai ser multiplicado por 21 ) etc...

A questão chave, é observar se o número é par ou ímpar. Em binário, o número par termina em 0 e o ímpar em 1. Assim determina-se o algarismo da direita, pela simples divisão do número por dois; se o resto for 0 (número par) o algarismo da direita é 0; se o resto for 1 (número ímpar) o algarismo da direita é 1.

Por outro lado, é bom lembrar que, na base dez, ao se dividir um número por dez, basta levar a vírgula para a esquerda. Na base dois, ao se dividir um número por dois, basta levar a vírgula para a esquerda. 

Assim, para se determinar o segundo algarismo, do número em binário, basta lembrar que ele é a parte inteira do número original dividido por dois, abandonado o resto.
Vamos converter 25 de decimal para binário.

Parte Fracionária do Número

A conversão da parte fracionária do número será feita, algarismo a algarismo, da esquerda para a direita, baseada no fato de que se o número é maior ou igual a 0,5 , em binário aparece 0,1, isto é, o correspondente a 0,5 decimal.

Assim, 0,6 será 0,1_ _ ..., ao passo que 0,4 será 0,0_ _ ...

Tendo isso como base, basta multiplicar o número por dois e verificar se o resultado é maior ou igual a 1. Se for, coloca-se 1 na correspondente casa fracionária, se 0 coloca-se 0 na posição. Em qualquer dos dois casos, o processo continua, lembrando-se, ao se multiplicar o número por dois, a vírgula move-se para a direita e, a partir desse ponto, estamos representando, na casa à direita, a parte decimal do número multiplicado por dois.

Vamos ao exemplo, representando, em binário, o número 0,625.

0,625 x 2 = 1,25 , logo a primeira casa fracionária é 1.

Resta representar o 0,25 que restou ao se retirar o 1 já representado.
0,25 x 2 = 0,5 , logo a segunda casa é 0.

Falta representar o 0,5 .
0,5 x 2 = 1 , logo a terceira casa é 1.
0,62510 = 0,1012

Quando o número tiver parte inteira e parte fracionária, podemos calcular, cada uma, separadamente.
Tentando representar 0,8, verifica-se que é uma dízima.

0,8 = 0,110011001100....

Da mesma forma, vê-se que 5,8 = 101,11001100... , também uma dízima.

11,6 = 1011,10011001100... o que era óbvio, bastaria deslocar a vírgula uma casa para a direita, pois 11,6 = 2 x 5,8 .

Como inicialmente estamos aprendendo a programar em C, esse programa abaixo converte um número Decimal para Binário, dê uma olhada:







view plaincopy to clipboardprint?
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. int n;
  5. scanf("%d",&n);

  6. int v[32];

  7. int i;
  8. for(i=0; i<32; i++){

  9. v[i]=-1;

  10. }

  11. int index = 0;
  12. while(n>0){

  13. v[index]=n%2;
  14. index++;
  15. n=n/2;
  16. }

  17. int j;
  18.  
  19. for(j=index-1;j>=0;j--){

  20. printf("%d", v[j]);
  21. }

  22. printf("\n");

  23. return 0;

  24. }

 
Design by @cleidimarviana | Bloggerized by Cleidimar Viana - Diário de Sistema