Avatar billede mickni33 Nybegynder
29. maj 2004 - 12:57 Der er 9 kommentarer og
1 løsning

decimal til binær (char array)

er der nogen der har en algorithme som kan konvertere et decimal tal om til en 8 bit binær streng altså hvis en metode får et 9 decimalt tal ind laver det om til en streng i et char array.

eks.  9 skal skrives således array[8]=00001001
Avatar billede arne_v Ekspert
29. maj 2004 - 14:01 #1
Det kan gøres på mange måder. Hurtigt forslag:

int v = 9;
char a[8+1];
...
int tmp = v:
for(int i=0;i<8;i++)
{
  s[7-i] = '0' + tmp % 2;
  tmp = tmp / 2;
}
s[8] = '\0';
Avatar billede mickni33 Nybegynder
29. maj 2004 - 14:07 #2
Hvor sættes '1' erne
Avatar billede mickni33 Nybegynder
29. maj 2004 - 14:07 #3
ligemeget jeg prøver det lige først
Avatar billede mickni33 Nybegynder
29. maj 2004 - 14:08 #4
dvs resultatet ligger i array s[]
Avatar billede arne_v Ekspert
29. maj 2004 - 14:08 #5
tmp % 2 returnerer enten 1 eller 0
Avatar billede mickni33 Nybegynder
29. maj 2004 - 14:09 #6
aaahh ok
Avatar billede arne_v Ekspert
29. maj 2004 - 14:11 #7
Der var lige et par slag fejl.

Her er kørende kode:

#include <iostream>

using namespace std;

int main()
{
  int v = 9;
  char a[8+1];
  int tmp = v;
  for(int i=0;i<8;i++)
  {
      a[7-i] = '0' + tmp % 2;
      tmp = tmp / 2;
  }
  a[8] = '\0';
  cout << a << endl;
  return 0;
}
Avatar billede arne_v Ekspert
29. maj 2004 - 14:13 #8
Eller lidt pænere måske:

#include <iostream>

using namespace std;

char a[8+1];

char *tobin(int v)
{
  int tmp = v;
  for(int i=0;i<8;i++)
  {
      a[7-i] = '0' + tmp % 2;
      tmp = tmp / 2;
  }
  a[8] = '\0';
  return a;
}


int main()
{
  cout << tobin(0) << endl;
  cout << tobin(1) << endl;
  cout << tobin(9) << endl;
  cout << tobin(65) << endl;
  cout << tobin(255) << endl;
  return 0;
}
Avatar billede mickni33 Nybegynder
29. maj 2004 - 14:31 #9
det er bare KANON arne
Avatar billede narrr Nybegynder
30. maj 2004 - 18:04 #10
En anden mulighed(som jeg desværre ikke selv kan tage æren for), er:

---
        int tal = 47;
    for(int i = 0; i<8; ++i)
        cout << ((tal & (128>>i))?1:0);
    cout << endl;
---
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester