/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Konvertering af decimal til binær i C
Fra : Supermule


Dato : 19-09-03 14:26

Hej!

Jeg er i gang med et program, hvor jeg skal have konverteret et heltal
(0-255) i otte bit binær. Jeg har lidt svært ved selv at klare det, så
derfor spørger jeg Jer, om ikke I har et stykke (gerne elegant) kode, som
kan klare problemet?

Programstumpen skal forøvrigt kaldes som en funktion, da resten af
programmet er opbygget med funktionskald.

Mvh.
Anders, nybegynder i C....


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.515 / Virus Database: 313 - Release Date: 01-09-2003



 
 
Troels Thomsen (19-09-2003)
Kommentar
Fra : Troels Thomsen


Dato : 19-09-03 15:00


> Programstumpen skal forøvrigt kaldes som en funktion, da resten af
> programmet er opbygget med funktionskald.
>

Hvad er input til funktionen, hvordan skal data komme ud af funktionen ?

Hvis du er helt blank vil give dig et hint med bitvise operatorer. Måske
kunne man AND'e input tallet bitvist med 1 (= 00000001b). Hvis resultatet er
non-zero er det fordi nederste bit er sat. Gør det samme med 2 (= 00000010b)
4 (=00000100b) , 8, 16, etc. Måske en for sætning ... etc etc

Mit fornemmelse er at du først får ordentlig hjælp her i gruppen når du gør
et ærligt forsøg selv, så vis os hvad du selv er kommet frem til, om ikke
andet så i pseudo kode.

mvh Troels




Supermule (19-09-2003)
Kommentar
Fra : Supermule


Dato : 19-09-03 16:54

"Troels Thomsen" <troels.thomsen@mailteledk> skrev i en meddelelse
news:3f6b0ba0$0$54827$edfadb0f@dread11.news.tele.dk...
>
> Mit fornemmelse er at du først får ordentlig hjælp her i gruppen når du
gør
> et ærligt forsøg selv, så vis os hvad du selv er kommet frem til, om ikke
> andet så i pseudo kode.
>

Jeg kalder funktionen med void, da ingen data skal tilbage til main,
resultatet skal blot skrives ud på skærmen.

void binaer()
{

int bit7=0, bit6=0, bit5=0, bit4=0, bit3=0, bit2=0, bit1=0, bit0=0;
int ind=0;
int a=0, b=0, c=0, d=0, e=0, f=0, g=0;

printf("%s","Indtast heltal mellem 0 og 255!\n");
scanf("%d", &ind);

if (ind >= 128)
{
a = (ind - 128);
bit7 = 1;
}
else
a=ind;

if (a >= 64)
{
b = (a - 64);
bit6 = 1;
}
else b=ind;

if (b >= 32)
{
c = (b - 32);
bit5 = 1;
}
else c=ind;

if (c >= 16)
{
d = (c - 16);
bit4 = 1;
}
else d=ind;

if (d >= 8)
{
e = (d - 8);
bit3 = 1;
}
else e=ind;

if (e >= 4)
{
f = (e - 4);
bit2 = 1;
}
else f=ind;

if (f >= 2)
{
g = (f - 2);
bit1 = 1;
}
else g=ind;

if (g = 1)
{
bit0 = 1;
}

printf("%d%d%d%d%d%d%d%d\n", bit7, bit6, bit5, bit4, bit3, bit2, bit1,
bit0);

getch();

}
return 0;

Mvh
Anders - nybegynder i C


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.520 / Virus Database: 318 - Release Date: 18-09-2003




Supermule (19-09-2003)
Kommentar
Fra : Supermule


Dato : 19-09-03 17:25

"Troels Thomsen" <troels.thomsen@mailteledk> skrev i en meddelelse
news:3f6b0ba0$0$54827$edfadb0f@dread11.news.tele.dk...
>
>
> Hvad er input til funktionen, hvordan skal data komme ud af funktionen ?
>

Glem venligst den først sendte kode, den ikke virker. Det gør denne, men kan
man ikke gøre det noget mere elegant, frem for denne bulldozer-metode?

//--------------------------------------------------------------------------
-

#pragma hdrstop
#include <stdio.h>
#include <conio.h>
//--------------------------------------------------------------------------
-

#pragma argsused
int main(int argc, char* argv[])
{
int bit7=0, bit6=0, bit5=0, bit4=0, bit3=0, bit2=0, bit1=0, bit0=0;
int ind=0;
int a=0, b=0, c=0, d=0, e=0, f=0, g=0;

printf("%s","Indtast heltal mellem 0 og 255!\n");
scanf("%d", &ind);

if (ind >= 128)
{
a = (ind - 128);
bit7 = 1;
}

if ((a >= 64) || (ind >= 64) && (ind < 128))
{
b = (a - 64);
bit6 = 1;
}
else
b=a;

if ((b >= 32) || (ind >= 32) && (ind < 64))
{
c = (b - 32);
bit5 = 1;
}
else
c=b;

if ((c >= 16) || (ind >= 16) && (ind < 32))
{
d = (c - 16);
bit4 = 1;
}
else
d=c;

if ((d >= 8) || (ind >= 8) && (ind < 16))
{
e = (d - 8);
bit3 = 1;
}
else
e=d;

if ((e >= 4) || (ind >= 4) && (ind < 8))
{
f = (e - 4);
bit2 = 1;
}
else
f=e;

if ((f >= 2) || (ind >= 2) && (ind < 4))
{
g = (f - 2);
bit1 = 1;
}
else
g=f;

if ((g == 1) || (ind == 1))
{
bit0 = 1;
}

printf("%d%d%d%d%d%d%d%d\n", bit7, bit6, bit5, bit4, bit3, bit2, bit1,
bit0);

getch();

return 0;
}
//--------------------------------------------------------------------------
-

Mvh.
Anders - nybegynder i C


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.520 / Virus Database: 318 - Release Date: 18-09-2003



Michael Rasmussen (19-09-2003)
Kommentar
Fra : Michael Rasmussen


Dato : 19-09-03 17:37


"Supermule" <supermule@email.dk> wrote in message
news:bkfal7$27hv$1@news.cybercity.dk...
> "Troels Thomsen" <troels.thomsen@mailteledk> skrev i en meddelelse
> news:3f6b0ba0$0$54827$edfadb0f@dread11.news.tele.dk...
> Glem venligst den først sendte kode, den ikke virker. Det gør denne, men
kan
> man ikke gøre det noget mere elegant, frem for denne bulldozer-metode?
>
[snip]

#include<iostream>
void printubyte8(unsigned char b)
{
for(int i=7;i>=0;--i)
{
std::cout<<((b&(1<<i))?'1':'0');
}
std::cout<<std::endl;
}

mvh
Michael Rasmussen



Supermule (19-09-2003)
Kommentar
Fra : Supermule


Dato : 19-09-03 17:44


"Michael Rasmussen" <michael@mediamobsters.com> skrev i en meddelelse
news:3f6b3069$0$24664$edfadb0f@dread14.news.tele.dk...
>
> "Supermule" <supermule@email.dk> wrote in message
> news:bkfal7$27hv$1@news.cybercity.dk...
> > "Troels Thomsen" <troels.thomsen@mailteledk> skrev i en meddelelse
> > news:3f6b0ba0$0$54827$edfadb0f@dread11.news.tele.dk...
>
> #include<iostream>
> void printubyte8(unsigned char b)
> {
> for(int i=7;i>=0;--i)
> {
> std::cout<<((b&(1<<i))?'1':'0');
> }
> std::cout<<std::endl;
> }
>
> mvh
> Michael Rasmussen
>

Takker mange gange!

Mvh.
Anders - nybegynder i C


---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.520 / Virus Database: 318 - Release Date: 18-09-2003



Peter Kragh (02-10-2003)
Kommentar
Fra : Peter Kragh


Dato : 02-10-03 20:23


"Michael Rasmussen" <michael@mediamobsters.com> wrote in message
news:3f6b3069$0$24664$edfadb0f@dread14.news.tele.dk...
[snip]
>
> #include<iostream>
> void printubyte8(unsigned char b)
> {
> for(int i=7;i>=0;--i)
> {
> std::cout<<((b&(1<<i))?'1':'0');
> }
> std::cout<<std::endl;
> }
>

Hvis man absolut skal være pedantisk, så er dette ikke C men C++.


Peter Kragh



Michael Rasmussen (02-10-2003)
Kommentar
Fra : Michael Rasmussen


Dato : 02-10-03 21:51


"Peter Kragh" <peter.kragh@__remove__this__mensa.dk> wrote in message
news:G2_eb.579$536.36476@news000.worldonline.dk...
>
> "Michael Rasmussen" <michael@mediamobsters.com> wrote in message
> news:3f6b3069$0$24664$edfadb0f@dread14.news.tele.dk...
> [snip]
> >
> > #include<iostream>
> > void printubyte8(unsigned char b)
> > {
> > for(int i=7;i>=0;--i)
> > {
> > std::cout<<((b&(1<<i))?'1':'0');
> > }
> > std::cout<<std::endl;
> > }
> >
>
> Hvis man absolut skal være pedantisk, så er dette ikke C men C++.
>
>
> Peter Kragh
>
>

det fuldstændig gyldig C99 kode.

- Michael Rasmussen



Mogens Hansen (03-10-2003)
Kommentar
Fra : Mogens Hansen


Dato : 03-10-03 05:46


"Michael Rasmussen" <michael@mediamobsters.com> wrote in message
news:3f7c8fa9$0$24639$edfadb0f@dread14.news.tele.dk...

[8<8<8<]
> > > #include<iostream>

C99 ??


[8<8<8<]
> > > std::cout<<((b&(1<<i))?'1':'0');

C99 ??


[8<8<8<]
> > > std::cout<<std::endl;


C99 ??

[8<8<8<]
> det fuldstændig gyldig C99 kode.

Det er vist ikke helt rigtigt.

Venlig hilsen

Mogens Hansen



Michael Rasmussen (03-10-2003)
Kommentar
Fra : Michael Rasmussen


Dato : 03-10-03 09:09


"Mogens Hansen" <mogens_h@dk-online.dk> wrote in message
news:bliulb$210r$1@news.cybercity.dk...
>
> "Michael Rasmussen" <michael@mediamobsters.com> wrote in message
> news:3f7c8fa9$0$24639$edfadb0f@dread14.news.tele.dk...
>
> [8<8<8<]
> > > > #include<iostream>
>
> C99 ??
>
>
> [8<8<8<]
> > > > std::cout<<((b&(1<<i))?'1':'0');
>
> C99 ??
>
>
> [8<8<8<]
> > > > std::cout<<std::endl;
>
>
> C99 ??
>
> [8<8<8<]
> > det fuldstændig gyldig C99 kode.
>
> Det er vist ikke helt rigtigt.
>
> Venlig hilsen
>
> Mogens Hansen
>
>

Mamma mia, jeg tænkte kun på variable deklerationen i for-loopet.
Iostream og namespaces er selvfølgelig ikke en del af C99 standarden.
Håber ikke jeg fik forvirret andre end mig selv :/

- Michael Rasmussen



Soeren (19-09-2003)
Kommentar
Fra : Soeren


Dato : 19-09-03 22:25

Kig på funktionen itoa(...)


--
_______________________________________________
Søren Dalby
Østervang 45
DK-3400 Hillerød
www.dalbydata.dk

"Supermule" <supermule@email.dk> wrote in message
news:bkf04r$1sck$1@news.cybercity.dk...
> Hej!
>
> Jeg er i gang med et program, hvor jeg skal have konverteret et heltal
> (0-255) i otte bit binær. Jeg har lidt svært ved selv at klare det, så
> derfor spørger jeg Jer, om ikke I har et stykke (gerne elegant) kode, som
> kan klare problemet?
>
> Programstumpen skal forøvrigt kaldes som en funktion, da resten af
> programmet er opbygget med funktionskald.
>
> Mvh.
> Anders, nybegynder i C....
>
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.515 / Virus Database: 313 - Release Date: 01-09-2003
>
>



Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409081
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste