Stránka 1 z 5
Převod z desítkové do dvojkové soustavy
Napsal: 18 úno 2017, 17:34
od markoni
Mám takový příklad v basiku dřevěných dob počítačů na převod s desítkové do dvojkové soustavy
Kód: Vybrat vše
smycka If dc / 2 = INT (dc/2) then b="0" + b
If dc / 2 <> INT (dc /2) then b="1" +b
dc = INT(dc/2 )
If dc > 0 then goto smycka
a potřebuji to převést do mikroC PRO for PIC
zápasím s tím čidlem DS1820 a potřebuji názorně vidět co s toho vlastně leze? díky
Napsal: 18 úno 2017, 17:53
od ZdenekHQ
Klasické celočíselné dělení se "zbytkem" ve smyčce. A "zbytek" je právě ten potřebný výsledek. V JSA to umím , v C ne.
Třeba číslo 7:
7/2 = 3, zbytek 1
3/2 = 1, zbytek 1
1/2 = 0, zbytek 1
Výsledek : 111b
Napsal: 18 úno 2017, 19:20
od ZdenekHQ
Můj omyl + OT odděleno.
Cowley píše:A co delit postupne s 256, 128, 64, 32, 16, 8, 4, 2, 1 a pocitat s "modulo" ( se zbytkem).
Napsal: 18 úno 2017, 19:27
od lesana87
Cowley: Co myslíš, že zabere počítači víc času, "delit postupne s 256, 128, 64, 32, 16, 8, 4, 2, 1 a pocitat s "modulo"" nebo dělit pořád jen dvěma?
Jinak opakuji, že v C to je tu
http://www.ebastlirna.cz/modules.php?na ... ht=#863618 od mtajovského.
P.S.: Dělit 256 je u bytu zbytečné.
Napsal: 18 úno 2017, 19:40
od Cowley
A to jsem tam nenapsal, ze po kazdem deleni ma s vysledkem udelat bitShift
OK, no problem
256 neni zbytecne, dozvime se, zda v desitkove soustave neni vstupni cislo vetsi...

Napsal: 18 úno 2017, 19:45
od lesana87
Ono se do bytu nevejde víc ani v desítkové soustavě.

Napsal: 18 úno 2017, 19:52
od ZdenekHQ
Jenže "dc" z toho algoritmu nemá žádnou definici, třeba je to longint.
Napsal: 18 úno 2017, 20:03
od Cowley
Uvidime, jak se s tim markoni popasuje.
Napsal: 18 úno 2017, 20:07
od lesana87
ZdenekHQ píše:Jenže "dc" z toho algoritmu nemá žádnou definici, třeba je to longint.
Pak naopak dělit 256 nestačí a je třeba (dle cowleyho algoritmu) dělit 2147483648, 1073741824, 536870912, ...., 4, 2, 1.

Napsal: 18 úno 2017, 21:48
od Atlan
Co nefunguje sprintf?
Napsal: 19 úno 2017, 12:48
od markoni
Toto bych i pochopil viz odkaz
http://www.ebastlirna.cz/modules.php?na ... ht=#863618
Kód: Vybrat vše
void bit_to_lcd1(unsigned char a)
{
char b = 7;
do
{
if((a & (1<<b))!= 0)
{
lcd_zapis("1");
}
else
{
lcd_zapis("0");
}
}while(b-- != 0);
}
ale zas narážím na toto když chci místo použití
tak
tak mně to nevezme kde dělám chybu?
Napsal: 19 úno 2017, 13:01
od lesana87
Asi by to chtělo napsat, co má být výstupem.
Napsal: 19 úno 2017, 13:17
od markoni
Výstupem by byl řetězec který bych si nechal zobrazit ve virtuálním terminálu Proteus 8 Professional
Kód: Vybrat vše
UART1_Init(9600);
UART1_Write_text(retez);
pro Atlan
Co nefunguje sprintf?
v PIC16F628A není dost místa. díky
Napsal: 19 úno 2017, 13:24
od lesana87
A je velký problém místo lcd_zapis("1") dát UART1_Write_text("1")?
Napsal: 19 úno 2017, 15:21
od markoni
Jasně že není ale já bych chtěl s tímto získaným stringem ještě pracovat tak když to pošlu na UART asi těžko.Snad mi nechceš tvrdit že neexistuje něco jako "jsi krasn"+"a"

díky