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
 1/19 anonim ***** válasza:
0%
Pont úgy, mint papíron.
2018. szept. 11. 22:48
Hasznos számodra ez a válasz?
 2/19 anonim ***** válasza:
0%

int main()

{

int n, c, k;


printf("Tizes: \n");

scanf("%d", &n);


printf("Kettes: %d\n", n);


for (c = 31; c >= 0; c--)

{

k = n >> c;


if (k & 1)

printf("1");

else

printf("0");

}


printf("\n");


return 0;

}

2018. szept. 11. 22:54
Hasznos számodra ez a válasz?
 3/19 A kérdező kommentje:
"Odafelé" (11101000) megy, de "visszafelé" (00010111) így nem, hacsak nem használnék 8 változót, hogy aztán printf("%d%d...", sz1, sz2, ...)-vel írassam ki, de ez nem lenne szép megoldás.
2018. szept. 11. 23:03
 4/19 anonim ***** válasza:
0%
Használj tömböt.
2018. szept. 11. 23:05
Hasznos számodra ez a válasz?
 5/19 A kérdező kommentje:
Nem lehet benne ciklus, elágazás, tömb, úgy gyorsan kész lenne, csak alap operátorokat lehet használni most.
2018. szept. 11. 23:08
 6/19 anonim ***** válasza:
0%
fűzz belőle egy stringet és mindig elé fűzöd az aktuálisat nem egy nagy kunszt
2018. szept. 11. 23:09
Hasznos számodra ez a válasz?
 7/19 A kérdező kommentje:
A számjegyeket karakter tömbe gyűjteném, és az elemeit fordított sorrendben írtam volna ki, ha lehetne használni.
2018. szept. 11. 23:13
 8/19 A kérdező kommentje:
3 feladat házi volt, ebből kettővel másnap kész voltam, de ezen már lassan egy hete gondolkozok.
2018. szept. 11. 23:20
 9/19 anonim ***** válasza:
0%

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

Aha, hogyne.

2018. szept. 11. 23:58
Hasznos számodra ez a válasz?
 10/19 anonim ***** válasza:
36%

Én így csinálnám:

int n = 23;

int b = 0;

(n&32) ? b+=100000 : 0;

(n&16) ? b+=10000 : 0;

(n&8) ? b+=1000 : 0;

(n&4) ? b+=100 : 0;

(n&2) ? b+=10 : 0;

(n&1) ? b+=1 : 0;

printf("Kettes: %d", b);

2018. szept. 12. 01:20
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!