Kezdőoldal » Számítástechnika » Programozás » C-ben hogyan lehet egy decimál...

C-ben hogyan lehet egy decimális számot kettes számrendszerbe átváltani?

Figyelt kérdés

A feladat a pl. 23 átváltása kettes számrendszerbe, úgy, hogy a megjelenő szöveg kb. ez legyen :

Tízes: 23

Kettes: 10111


És a csavar:

Csak alapműveleteket lehet hasznalni.

Ezért meg van szabva, hogy a megadott szám max 255 lehet, és lehetnek "segéd" nullák is a kapott bináris szám elején.



2018. szept. 11. 22:36
1 2
 11/19 anonim ***** válasza:

Ha csak pozitív számok lehetnek 0 és 255 között, és nem gond a vezető nullák, akkor az egyik legegyszerűbb pl.


void dec2bin(unsigned int d) {

unsigned int m;

for (m=128; m>0; m>>=1) printf(m&d?"1":"0");

printf("\n");

}

// dec2bin(18);

2018. szept. 12. 10:33
Hasznos számodra ez a válasz?
 12/19 anonim ***** válasza:
0%

"Nem lehet benne ciklus, elágazás, tömb"

Ja bocs, ezt csak most olvastam, akkor a fenti mégsem jó.

2018. szept. 12. 11:29
Hasznos számodra ez a válasz?
 13/19 anonim ***** válasza:
0%

Tessék válogass (és tanuld meg használni a Google-t):

[link]

2018. szept. 12. 11:51
Hasznos számodra ez a válasz?
 14/19 anonim ***** válasza:
30%

Ha az alábbiak a kritériumok:

* "A feladat a pl. 23 átváltása kettes számrendszerbe"

* "Nem lehet benne ciklus, elágazás, tömb"

* "a megadott szám max 255 lehet, és lehetnek "segéd" nullák is a kapott bináris szám elején"

akkor szépen, egyenként végig kell menni a kettes számrendszer beli helyiértékeken: 2^7-től (128-tól), 2^0-ig (1-ig) és el kell osztani vele a számot - ez adja a bináris számjegyet - illetve maradékos osztást kell végezni vele - ez adja a decimális szám új értékét,


Bővebben:

[link]

2018. szept. 12. 12:07
Hasznos számodra ez a válasz?
 15/19 anonim ***** válasza:
44%

Vagy a fenti példámat szétbontva:


void dec2bin(unsigned char d) {

unsigned char m = 128;

printf(m&d?"1":"0"); m>>=1;

printf(m&d?"1":"0"); m>>=1;

printf(m&d?"1":"0"); m>>=1;

printf(m&d?"1":"0"); m>>=1;

printf(m&d?"1":"0"); m>>=1;

printf(m&d?"1":"0"); m>>=1;

printf(m&d?"1":"0"); m>>=1;

printf(m&d?"1":"0"); m>>=1;

printf("\n");

}


// dec2bin(23);

2018. szept. 12. 16:36
Hasznos számodra ez a válasz?
 16/19 anonim ***** válasza:
44%
...Az utolsó shift már nem is kell, csak végig másoltam. :)
2018. szept. 12. 16:37
Hasznos számodra ez a válasz?
 17/19 A kérdező kommentje:
Köszi a válaszokat :) már kezd körvonalazódni egy megoldás nekem is. Shiftet, bitszintű műveleteket (ha így nevezik) még nem tanultunk, a számábrázolási módokat még nem néztük, ha ehhez kötődnek.
2018. szept. 12. 17:14
 18/19 anonim ***** válasza:
50%

#10/#15/#16: A kedves kérdező #5-ös hozzászólásában leírta, hogy: "Nem lehet benne ciklus, elágazás, tömb" így rövid formában, feltételes operátor ( [link] ) formájában sem, így ez nem akceptálható megoldás sajnos (pedig egy megoldásnak jó!). ;>(


Feltételezem a feladat arra szolgál, hogy leellenőrizze, hogy a nebuló érti-e a decimális->bináris számrendszerek közötti átváltást "manuálisan" (év elején vagyunk így ilyen kis "béna" feladatok adása elképzelhető). ;>/

2018. szept. 12. 18:59
Hasznos számodra ez a válasz?
 19/19 sharkxxx ***** válasza:

#include <stdio.h>

#include <string.h>


char * dec2bin(unsigned char d)

{

    static char dec2bin_buffer[9];

    unsigned char m = 128;

    unsigned char c = 7;

    char s[2];

    char r[9] = "";

    sprintf(s, "%u", (m&d)>>c--); strcat(r, s); m>>=1;

    sprintf(s, "%u", (m&d)>>c--); strcat(r, s); m>>=1;

    sprintf(s, "%u", (m&d)>>c--); strcat(r, s); m>>=1;

    sprintf(s, "%u", (m&d)>>c--); strcat(r, s); m>>=1;

    sprintf(s, "%u", (m&d)>>c--); strcat(r, s); m>>=1;

    sprintf(s, "%u", (m&d)>>c--); strcat(r, s); m>>=1;

    sprintf(s, "%u", (m&d)>>c--); strcat(r, s); m>>=1;

    sprintf(s, "%u", (m&d)>>c--); strcat(r, s);

    strcpy(dec2bin_buffer, r);

    return dec2bin_buffer;

}


int main()

{

    unsigned char d = 23;

    printf("%d = %s\n", d, dec2bin(23));

    return 0;

}

2018. szept. 12. 22:15
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!