Kezdőoldal » Számítástechnika » Programozás » Tizes számrendszerbeli szám...

Tizes számrendszerbeli szám számjegyeinek felcserélése bitműveletekkel hogyan?

Figyelt kérdés

Kizárólag bitműveletek alkalmazásával felcserélhetőek egy tetszőleges tizes számrendszerbeli pozitív szám számjegyei?

Mennyire bonyolult ezt megvalósítani, mi lenne az algoritmus?

Kettes számrendszerbe konvertálás nélkül, kizárólag bitműveletek végrehajtásával érdekelne a dolog.

15=51

159=951 stb

Ilyenre gondolok.



2019. jan. 3. 17:57
1 2
 1/14 anonim ***** válasza:
29%
A kettes, és a tízes számrendszer helyiértékei (1,2,4,... és 1,10,100,...) semmilyen fedésben nincsenek egymással, tehát kizárt hogy konverzió nélkül megoldjad.
2019. jan. 3. 18:18
Hasznos számodra ez a válasz?
 2/14 anonim ***** válasza:
0%
var reversedNumber = Int32.Parse(myNumber.ToString().Reverse());
2019. jan. 3. 18:52
Hasznos számodra ez a válasz?
 3/14 A kérdező kommentje:
Ez szerinted bitműveletekkel való megoldás?
2019. jan. 3. 19:16
 4/14 anonim ***** válasza:
26%

Persze, hogy felcserélhetők bitműveletekkel.


Mi lenne az akadálya ennek?

2019. jan. 3. 19:43
Hasznos számodra ez a válasz?
 5/14 A kérdező kommentje:
Nem tudom a módját, szövegesen leírod, miként kell ezt végrehajtani?
2019. jan. 3. 20:08
 6/14 anonim ***** válasza:

d15: 0000 1111

d51: 0011 0011

2019. jan. 3. 20:10
Hasznos számodra ez a válasz?
 7/14 A kérdező kommentje:
Programkódban szeretném megoldani, hogy program végezze ezt el, bitműveletek segítségével.
2019. jan. 3. 20:22
 8/14 A kérdező kommentje:

Például Pascal-ban szeetném megoldani, de sajnos ötletem sincs. :-(


program szamcsere;


var


szam1, szam2 : longint;


begin

Write('Kerem a szamot : ');

ReadLn(szam1);

hogyan tovább?

end.

2019. jan. 3. 20:27
 9/14 anonim ***** válasza:
46%
Kizárólag bitműveletekkel nem lehet, biztos vagy benne, hogy így szól a feladat, vagy ezt magadnak találtad ki?
2019. jan. 3. 20:41
Hasznos számodra ez a válasz?
 10/14 2*Sü ***** válasza:
100%

Mi történik mondjuk egy kétjegyű szám számjegyeinek felcserélése során?

[15] = 1*10 + 5*1 → 5*10 + 1*1 = [51]


[ab] = 10a + b

[ba] = 10b + a = [ab] + 9b - 9a


Hát ezt a (9b - 9a)-t bajos lesz [ab]-ből kifejezni bináris műveletekkel.


~ ~ ~


Vegyük mondjuk a 97-et:


97 = 0110 0001

90 = 0101 1010

07 = 0000 0111


Megfordítva 79:


79 = 0100 1111

70 = 0100 0110

09 = 0000 1001


Tehát a 0110 0001 (97)-ből kellene valahogy kihámozni a 0101 1010 (90)-t, abból 000 1001 (09)-et csinálni, illetve ki kellene hámozni a 0000 0111 (07)-et, és abból meg 0100 0110 (70)-et csinálni, majd összeadni.


~ ~ ~


Nem, ez ciklus és/vagy feltételvizsgálat és/vagy segédtáblák nélkül, pusztán bitműveletekkel (NOT, AND, OR, XOR, eltolás, rotálás) nem fog menni. Ha BCD – binárisan kódolt decimális – formában lenne, akkor még egyszerűbb lenne, de binárisból BCD-be konvertálni sem egyszerű, még ciklusokkal, elágazásokkal sem. Lásd:

[link]

2019. jan. 4. 00:54
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!