Prevod z dvojkovej sustavy do desiatkovej
Moderátori: psichac, Moderátori
Prevod z dvojkovej sustavy do desiatkovej
ahojte chalani mam otázku na telo prijmam po RS 232 4*8 bytov na obrázku je síce len 3*8 ale to je detail teraz posielam už 4
ide o to že to je hodnota frekvencie a ja ju mam zobraziť v jazyku C ako jedno číslo, číslo to je cele a bez znamienka číže unsigned int
, ak mam pole veľkosti 3 sa mi to uloži ale zistil som že v C mam síce prístup k jednotlivým bajtom ale nie k jednotlivým bitom ako viem si dane uložené číslo ktoré bude v desiatkovej sústave previesť na binárne jednotlivé byti uložiť do ďalšieho pola od 0 po 32 a podľa toho sčítavať v cykle for len 2^n a potom dostanem to číslo ale príde mi to ako blbe riešenie nepoznáte alebo neviete poradiť niečo elegantnejšie za vaše odpovede vopred ďakujem
ide o to že to je hodnota frekvencie a ja ju mam zobraziť v jazyku C ako jedno číslo, číslo to je cele a bez znamienka číže unsigned int
, ak mam pole veľkosti 3 sa mi to uloži ale zistil som že v C mam síce prístup k jednotlivým bajtom ale nie k jednotlivým bitom ako viem si dane uložené číslo ktoré bude v desiatkovej sústave previesť na binárne jednotlivé byti uložiť do ďalšieho pola od 0 po 32 a podľa toho sčítavať v cykle for len 2^n a potom dostanem to číslo ale príde mi to ako blbe riešenie nepoznáte alebo neviete poradiť niečo elegantnejšie za vaše odpovede vopred ďakujem
0
Naposledy upravil/-a Dumitru v 30 Apr 2015, 21:21, upravené celkom 1 krát.
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Prevod z dvojkovej sustavy do desiatkovej
Z tvojho popisu ti nerozumiem o čo ti ide. Ak potrebuješ preniesť 4 byte tak ich prenes a neprevádzaj na 32 cislic 1 a 0. To je holý nezmysel.
Potom ešte tvrdíš že v C nemáš prístup k jednotlivým bitom. To nie je pravda. Pravda síce je že tam datový typ bit nie je, ale ak potrebuješ vedieť hodnotu nejakého bitu tak sa to dá zistiť maskovaním - operácia bitového súčinu a vhodného číselka.
A zvyšok som nepochopil. Hovoríš nejakou čudnou rečou.
Potom ešte tvrdíš že v C nemáš prístup k jednotlivým bitom. To nie je pravda. Pravda síce je že tam datový typ bit nie je, ale ak potrebuješ vedieť hodnotu nejakého bitu tak sa to dá zistiť maskovaním - operácia bitového súčinu a vhodného číselka.
A zvyšok som nepochopil. Hovoríš nejakou čudnou rečou.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Prevod z dvojkovej sustavy do desiatkovej
takto som to popisal dufam ze to bude jasnejsie proste potrebujem v C naspet zlucit to cislo a ulozit ho do premennej v desiatkovej sustave a dalej s nim pracovat na konci som sa sekol pole 2 tam ma byt
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Prevod z dvojkovej sustavy do desiatkovej
aby som pravdu povedal tak, aby som si s vykryvenou hlavou prečítal to isté napísané na papieri, to si mi veľmi nepomohol.
Aspoň ten obrázok si mohol slušne otočiť.
Zvyčajne mi i a y je srdečne jedno ale keď ide o technický termín tak to jedno nieje lebo bit a byte je pre mňa veľký rozdiel.
Potom mi prosím ťa povedz čo je to za akademický merač f ktorý posiela takto naformátovanú nameranú frekvenciu?
Takže ak dobre chápem z 32 znakového ASCII retazca cislic '1' a '0' potrebuješ spraviť unsigned int.
Nuž naštuduj si prevod z dvojkovej do desiatkovej sústavy, napíš nejaký algoritmus a daj sem, ak ti to nebude fungovať. Tak ti možno niekto poradí.
Aspoň ten obrázok si mohol slušne otočiť.
Zvyčajne mi i a y je srdečne jedno ale keď ide o technický termín tak to jedno nieje lebo bit a byte je pre mňa veľký rozdiel.
Potom mi prosím ťa povedz čo je to za akademický merač f ktorý posiela takto naformátovanú nameranú frekvenciu?
Takže ak dobre chápem z 32 znakového ASCII retazca cislic '1' a '0' potrebuješ spraviť unsigned int.
Nuž naštuduj si prevod z dvojkovej do desiatkovej sústavy, napíš nejaký algoritmus a daj sem, ak ti to nebude fungovať. Tak ti možno niekto poradí.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 45
Re: Prevod z dvojkovej sustavy do desiatkovej
Na základe tohto :
Vieš spraviť screenshot z Realterm, kde máš viditeľné nastavenie v záložke Display? Aby bolo jasné, čo vlastne prijímaš.
dedukujem, že merač frekvencie si programuješ sám.Dumitru napísal:na obrázku je síce len 3*8 ale to je detail teraz posielam už 4
Vieš spraviť screenshot z Realterm, kde máš viditeľné nastavenie v záložke Display? Aby bolo jasné, čo vlastne prijímaš.
0
Re: Prevod z dvojkovej sustavy do desiatkovej
prepač niesom slovak preto sa mi tie i y utekaju ale budem sa snazit aspon pri technickych terminov nepliest ,po RS232 ani nemozem posielat viac ako 8 bitov viď obrazok preto si to musim rozdelit na 3*8 a posielat osobitne kazdych 8 keby sa dalo 32 na raz tak parada nic by ma netrapilo ale neda , funguje ten merac asi takto po dobu jednej sekundy ktora je priamo z GPS signalu mam pocitadlo kltore mi pocita periody cize pri kazdej nabeznej hrane signalu pripocita +1bit v podste kolko impulzov napocita taka je frekvencia cize presnost merania je +-1Hz takze dostanem cislo buď 9999999 alebo 10000001 samozrejme ak meranie prebieha len 1 sekundu ak 10 tak +-0.1 ak 20 tak +-0,01 asi takto v strucnosti
-- Spojený príspevok 30 Apr 2015, 22:13 --
takto je nastavenie
-- Spojený príspevok 30 Apr 2015, 22:13 --
takto je nastavenie
0
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 45
Re: Prevod z dvojkovej sustavy do desiatkovej
Ešte raz. Na to aby Ti vedel niekto pomôcť, potrebuje vedieť či je to takto:
Preto som spomínal to nastavenie RealTerm
.... predbehol si ma
Ja by som to spravil takto:
prijmeš prvy byte, posunies o 16 bitov do ľava
prijmeš druhy byte, posunies o 8 bitov do ľava a pripocitas k prvemu
prijmeš treti byte a pripocitas k predchadzajucemu vysledku. a mas to.
Alebo prijímaš cez RS 232 0x80 alebo 0x31 0x30 0x30 0x30 0x30 0x30 0x30 0x30peterple napísal:Takže ak dobre chápem z 32 znakového ASCII retazca cislic '1' a '0' potrebuješ spraviť unsigned int.
Preto som spomínal to nastavenie RealTerm
.... predbehol si ma
Ja by som to spravil takto:
prijmeš prvy byte, posunies o 16 bitov do ľava
prijmeš druhy byte, posunies o 8 bitov do ľava a pripocitas k prvemu
prijmeš treti byte a pripocitas k predchadzajucemu vysledku. a mas to.
0
Re: Prevod z dvojkovej sustavy do desiatkovej
prijmam to ako 0x8 cize prve sa mi posle 0-7 potom sa mi posle 8-15 a potom 16-23 a takto ak pomoze je aj usporiadanie MSB a LSB
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Prevod z dvojkovej sustavy do desiatkovej
no už je to jasné. Súhlasím s lh, urobil by som to presne tak isto, iba by som miesto spočítania použil bitový or.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Prevod z dvojkovej sustavy do desiatkovej
v pohode ale zdrojak ja v jazyku HDL ak to pomoze mozem poslat ale neviem ci uz som sa raz tu pital na HDL a nikto nicxmilos napísal:ukaz zdrojak co vlastne robis. Kludne aj do SS.
0
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 45
Re: Prevod z dvojkovej sustavy do desiatkovej
Neodpustím si otázku... To fakt potrebuješ merať frekvenciu v rádoch desiatok MHz s presnosťou na 1Hz?
-- Spojený príspevok 30 Apr 2015, 22:49 --
Ale z toho nastavenia je jasné, že je to tá prvá možnosť.
Ak byty prijímaš v poradí ako si písal, tak ten postup spájania treba obrátiť. V prvom kroku nerob nič, len načítaj, ďalší byte posuň o 8 bitov, spočítaj, a ďalší o 16 a spočítaj. A máš to.
A teraz idem premýšľať o operácii bitový OR
Nie som programátor, tak by som sa pri tejto príležitosti tiež rád priučil. Peterple, prečo je vlastne lepšie použiť bitový or ako to jednoducho sčítať? Ja sa spolieham na kompilátor, že to za mňa vyrieši
-- Spojený príspevok 30 Apr 2015, 22:49 --
Nepochopili sme sa. 0x80 som myslel ako šesťnástkovú reprezentáciu čísla 128, a 0x31 0x30 0x30 0x30 0x30 0x30 0x30 0x30 ako osem znakov ASCII v šestnástkovom zápise. 0x31 ako "1" a 0x30 ako "0" takže "1""0""0""0""0""0""0""0".Dumitru napísal:prijmam to ako 0x8 cize prve sa mi posle 0-7 potom sa mi posle 8-15 a potom 16-23 a takto ak pomoze je aj usporiadanie MSB a LSB
Ale z toho nastavenia je jasné, že je to tá prvá možnosť.
Ak byty prijímaš v poradí ako si písal, tak ten postup spájania treba obrátiť. V prvom kroku nerob nič, len načítaj, ďalší byte posuň o 8 bitov, spočítaj, a ďalší o 16 a spočítaj. A máš to.
A teraz idem premýšľať o operácii bitový OR
Nie som programátor, tak by som sa pri tejto príležitosti tiež rád priučil. Peterple, prečo je vlastne lepšie použiť bitový or ako to jednoducho sčítať? Ja sa spolieham na kompilátor, že to za mňa vyrieši
0
Naposledy upravil/-a lh v 30 Apr 2015, 23:20, upravené celkom 1 krát.
Re: Prevod z dvojkovej sustavy do desiatkovej
JOP potrebujem a dokonca ja to meram nie +-1Hz ale dvadsat sekund cize +-0,01Hz ale to pretoze je to referencny zdroj frekvencie tak by to malo byt co najpresnejsie idem aj ja rozmislat ako to v C sa da posuvat viem co je bitovi posun viem ako to funguje len este mi nie je jasne ako to spravit v C
0
Naposledy upravil/-a Dumitru v 30 Apr 2015, 23:23, upravené celkom 1 krát.
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 45
Re: Prevod z dvojkovej sustavy do desiatkovej
Napr. http://www.builder.cz/rubriky/c/c--/uci ... e-155778cz to máš popísané citujem:
"bitový posun doleva - <<
Tímto operátorem jednoduše provedeme posun všech bitů levého operandu o určitý počet míst, který udává hodnota pravého operandu. Při posunu se bity nejvíce nalevo ztrácejí* a zleva jsou uvolněná místa doplněna nulami. Následující příkaz vrátí o dvě místa bitově posunutou hodnotu čísla 45.
45 << 2;
před posunem (hodnota 45) 00101101
po posunu (hodnota 180, výsledek celého výrazu) 10110100"
*pozor preto na dátový typ výslednej premennej!
"bitový posun doleva - <<
Tímto operátorem jednoduše provedeme posun všech bitů levého operandu o určitý počet míst, který udává hodnota pravého operandu. Při posunu se bity nejvíce nalevo ztrácejí* a zleva jsou uvolněná místa doplněna nulami. Následující příkaz vrátí o dvě místa bitově posunutou hodnotu čísla 45.
45 << 2;
před posunem (hodnota 45) 00101101
po posunu (hodnota 180, výsledek celého výrazu) 10110100"
*pozor preto na dátový typ výslednej premennej!
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Prevod z dvojkovej sustavy do desiatkovej
v tomto prípade by to malo biť to isté, ale keď by si robil 1 + 1 a 1 || 1 tak je to rozdiel
rotácia vľavo
co << koľko
rotácia vpravo
co >> kolko
S to presnosťou si to viem predstaviť že to potrebuješ merať dlho. Keď som pred 30tymi rokmi nastavoval hodiny s jednočipom, tiež som meral dlho, už si nepamätám presne koľko to bolo ale bolo to viac než štyri minúty. Vtedy nebol k dispozícii GPS signál a tak som si bral ako referenciu riadkový synchronizačný signál z TV ktorý bol vtedy naviazaný na nejaký presný etalón.
rotácia vľavo
co << koľko
rotácia vpravo
co >> kolko
S to presnosťou si to viem predstaviť že to potrebuješ merať dlho. Keď som pred 30tymi rokmi nastavoval hodiny s jednočipom, tiež som meral dlho, už si nepamätám presne koľko to bolo ale bolo to viac než štyri minúty. Vtedy nebol k dispozícii GPS signál a tak som si bral ako referenciu riadkový synchronizačný signál z TV ktorý bol vtedy naviazaný na nejaký presný etalón.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Prevod z dvojkovej sustavy do desiatkovej
ano ano ano to som uz pochopil princip cize potrebujem napriklad premennu long int ja neviem b; a ta je 32 bitova a donej potupne posuvat tie prijate data ci zle tomu rozumiem ?
0
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Prevod z dvojkovej sustavy do desiatkovej
dobre tomu rozumieš. Len na drobnosť. Na PC je int 32bitov a long int 64bitov (a ani to nemusí byť vždy pravda)
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
Re: Prevod z dvojkovej sustavy do desiatkovej
dakujem za rubriku myslim si ze je mi to uz jasne a este raz dakujem moc krat za pomoc
0
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 45
Re: Prevod z dvojkovej sustavy do desiatkovej
Aha akosi som nad týmto nerozmýšľal, keďže pripočítavam k rádom, kde mi po posune zostali nuly. Nuž, ako vraví klasik... učiť sa učiť sa a aj tak nevedieťpeterple napísal:v tomto prípade by to malo biť to isté, ale keď by si robil 1 + 1 a 1 || 1 tak je to rozdiel
0