Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Prevod cisel

Zdravim ludkovia chcel by som sa spytat, ci sa da previest cislo zo 16-tkovej sustavy do 4-kovej bez toho aby som ho predtym previedol do 10-tkovej (pomôcky: papier, pero)

Předmět Autor Datum
ano, dá. Minimálně "otrocky", tj. rozkladem na jednotlivé řády, jejich převodem a následným posčítán…
touchwood 13.10.2010 09:32
touchwood
V tomto speciálním případě stačí převést vstupní řetězec znak po znaku ( lhostejno, zda zepředu či z…
hynajs 13.10.2010 12:36
hynajs
tak daleko jsem to už nedomýšlel..
touchwood 13.10.2010 14:24
touchwood
Ještě bych podotknul, že převod naopak je podle tabulky stejně možný, jenom se řetězec musí brát po…
hynajs 13.10.2010 15:15
hynajs
Ludia prosimvas clovek sa lisi od PC tym ze vie rozmyslat. Tabulky nechajte pre blbe stroje ;)
MM.. 14.10.2010 01:08
MM..
Da sa to zhlavy, nepotrebujes ani papier ani pero a casu potrebujes asi tak 2sekundy na cifru. Vset…
MM.. 14.10.2010 01:04
MM..
Držel jsem se přesně zadání tazatele : bez toho aby som ho predtym previedol do 10-tkovej čímž za…
hynajs 14.10.2010 08:09
hynajs
To neni prevod cisla do desiatkovej, to je normalne delenie F/4. Akurat som tam v zatvorke napisal c…
MM.. 14.10.2010 18:51
MM..
OK poslední
hynajs 14.10.2010 20:38
hynajs
Hezky po pismenku, kazde nahradis dvema: IF 0 THEN 00 IF 1 THEN 01 IF 2 THEN 02 IF 3 THEN 03 IF 4 T…
AZOR 14.10.2010 18:58
AZOR
a kdybych nebyl ** tak jsem si mohl precist, ze uz to tu nikdo psal. Nic jednodussiho se vymslet ned…
AZOR 14.10.2010 19:00
AZOR

ano, dá. Minimálně "otrocky", tj. rozkladem na jednotlivé řády, jejich převodem a následným posčítáním. Ale s ohledem na dělitelnost základu (16 a 4) bych si tipnul, že na to bude nějaký cool algoritmus (protože např. 10h = 100q).

edit: pak mě napadá ta nejlepší soustava, a to dvojková: převést šestnáctkové numero do dvojkové (prosté sepsání binárních hodnot šestnáctkových číslic jak jdou za sebou a následný přepočet do čtyřkové (tj. páry binárních číslic převádět na hodnoty 0-3, začíná se odprava)

edit: např.
AFh = 10101111b = 2233q

edit2: nevládneš-li schopností zpaměti převádět šestnáctkové číslice na binární čísla, udělej si převodní tabulku:
0..0000
1..0001
2..0010
3..0011
4..0100
5..0101
6..0110
7..0111
8..1000
..
E..1110
F..1111

totéž pak pro zpětný převod do čtyřkové:
0..00
1..01
2..10
3..11

edit2: Binár je IT král, ajťáky milován...(viz "Ať žijí duchové" :-)

V tomto speciálním případě stačí převést vstupní řetězec znak po znaku ( lhostejno, zda zepředu či zezadu ) podle převodní tabulky pro šestnáct znaků :
0 - 00
1 - 01
2 - 02
3 - 03
4 - 10
5 - 11
6 - 12
7 - 13
8 - 20
9 - 21
A - 22
B - 23
C - 30
D - 31
E - 32
F - 33

Nic víc.

Příklad : "AF" ... 2233 otrocky podle tabulky.

Ještě bych podotknul, že převod naopak je podle tabulky stejně možný, jenom se řetězec musí brát po dvojicích zprava ( nebo řetězec doplňme nulou zleva, pokud je počet znaků lichý).

Pokud je v řetězci čárka (která už teda není desetinná ;-) ), převedeme zvlášť pravý a zvlášť levý řetězec.

Analogickým způsobem lze postupovat vždy, když je jeden základ n-tou mocninou druhého. Pak místo dvojic bereme n-tice.

Samozřejmě pokud není splněna naše luxusní podmínka (jeden základ mocninou druhého), otrocký postup je nepoužitelný. Pokud potřebujeme funkci pro převod z jedné obecné soustavy do druhé a nemáme ji šťastně v knihovně, jedná se o pěkné programátorské cvičení.
Momentálně si prohlížím svůj starý výtvor a moc se v ní nevyznám :-D. No, hlavně že chodí.

Da sa to zhlavy, nepotrebujes ani papier ani pero a casu potrebujes asi tak 2sekundy na cifru.

Vsetky 2 na n-tu sustavy vpodstate vychadzaju z dvojkovej, zoskupovanim bitov. 4kova zoskupujes 2bity, 16kova zoskupujes 4bity. Z toho vylpyva ze jedna cifra 16kovej bude 2 cifry 4kovej.

A teda kazdu cifru 16kovej mozes ZHLAVY vydelit 4mi a vysledok (celociselny) je prva cifra a zvysok po deleni je druha cifra 4kovej.

Priklad:
16kova: F
4kova: F(=15)/4 = 3 zvysok 3, preto "F" 16kovej je "33" v 4kovej.

Priklad2:
16kova: 96
4kova: 9/4 = 2 zvysok 1, 6/4 = 1 zvysok 2, preto "96" 16kovej je "2112" v 4kovej.

Staci ti vediet malu nasobilku (nasobky 4) do cisla 15, co vie kazdy prvak ZS.

P.S. zaryty hardwarista to robi zhlavy tak ze to prevadza zhlavy cez dvojkovu sustavu, je to pre neho jednoduchsie ako delit 4-mi :)

Držel jsem se přesně zadání tazatele :

bez toho aby som ho predtym previedol do 10-tkovej

čímž zavání : F=15.
Striktně vzato jsi to do desítkové nepřevedl, ale asi těžko někdo uvažuje C/4=3 .

Kdyby tam ta podmínka nebyla, pak je samozřejmě nějaká tabulka konina a uvedený postup je navýsost přirozený. :-)

To neni prevod cisla do desiatkovej, to je normalne delenie F/4. Akurat som tam v zatvorke napisal co to je symbol F a jak sa to da delit. A,B,C,D,E,F su normalne cifry, stejne ako 0 az 9, a F/4 je stejna operacia ako napr. 9/4 alebo 3/4, a moze ju urobit spameti.

Neni v tom ziaden prevod cisla do desiatkovej sustavy.

P.S. uvazovat ze C/4=3 bude musiet ked to chce prevadzat priamo zo 16kovej. Stejne tak napr. v dvojkovej sustave musi iuvazovat ze 1+1=10, ked chce nieco robit v dvojkovej. Ked tak uvazovat nevie tak ma smolu nebude prevadzat nic z hlavy :)

Zpět do poradny Odpovědět na původní otázku Nahoru