Násobení velkých čísel
Násobení velkých čísel
Zdravím,
tak jsem narazil... úplná jednoduchost, ale pro mne neřešitelná.
Násobení velkých čísel... Jak deklarovat jejich typ - s tím se trápím.
příklad :
mám číslo a (v rozsahu 0 až 5000)
mám číslo b (v rozsahu 0 až 5000)
a potřebuji výsledek jako číslo c ( tedy ten bude v rozsahu 0 až 25 milionů)
díky za radu.
tak jsem narazil... úplná jednoduchost, ale pro mne neřešitelná.
Násobení velkých čísel... Jak deklarovat jejich typ - s tím se trápím.
příklad :
mám číslo a (v rozsahu 0 až 5000)
mám číslo b (v rozsahu 0 až 5000)
a potřebuji výsledek jako číslo c ( tedy ten bude v rozsahu 0 až 25 milionů)
díky za radu.
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: Násobení velkých čísel
https://www.arduino.cc/reference/en/lan ... ypes/long/
Pro ještě větší čísla pokud nepůjdeš do mínusu "unsigned long" (UL)
Kód: Vybrat vše
long x = 5000L;
long y = 5000L;
long xy = (long) x * (long) y;
//nebo přímo čísla
long xy = 5000L * 5000L;
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Násobení velkých čísel
Řek' bych:"Na mý gusto nějak přetypováno! X a Y jsou už long."pavel1tu píše: ↑18 lis 2020, 16:33https://www.arduino.cc/reference/en/lan ... ypes/long/
Pro ještě větší čísla pokud nepůjdeš do mínusu "unsigned long" (UL)Kód: Vybrat vše
long x = 5000L; long y = 5000L; long xy = (long) x * (long) y; //nebo přímo čísla long xy = 5000L * 5000L;
Kód: Vybrat vše
long xy = (long) x * (long) y;
- pavel1tu
- Příspěvky: 2054
- Registrován: 26 říj 2017, 08:28
- Reputation: 0
- Bydliště: Trutnov
- Kontaktovat uživatele:
Re: Násobení velkých čísel
No, ale mne to někdy bralo jako long a někdy ne, v jednom programu. Ale mám tucha, že to bylo násobení int a long možná, pak jsem to opravdu přeehnal.jankop píše: ↑18 lis 2020, 19:21Řek' bych:"Na mý gusto nějak přetypováno! X a Y jsou už long."Kód: Vybrat vše
long xy = (long) x * (long) y;
A nebo si to špatně pamatuji, což je v mém případě hodně pravděpodobné
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Pavel1TU
"Správně napsaný kod lze číst jako knihu"
Re: Násobení velkých čísel
Pánové díky... ještě maličkost...
jak to upravit, když x a y jsou int (jsou to výsledky z předchozích operací)
jak to upravit, když x a y jsou int (jsou to výsledky z předchozích operací)
-
- Příspěvky: 1030
- Registrován: 06 zář 2017, 20:04
- Reputation: 0
- Bydliště: Brno
- Kontaktovat uživatele:
Re: Násobení velkých čísel
No to je právě to přetypování, to jsou ty kulaté závorky s uvedením typu, na který chci následující výraz převést.
respektive
Kód: Vybrat vše
int x,y;
...
long xy = (long) x * (long) y;
Kód: Vybrat vše
int x,y;
long xy;
...
xy = (long) x * (long) y;
Re: Násobení velkých čísel
Hele, není mi jasný, kde jsi vzal zrovna hodnotu 5 000. Binárně je na její uložení potřeba 12,29 bitů (2^12,29=5 000) a nevypadá to, že jde o výstup nějakého převodníku.
Re: Násobení velkých čísel
Dostal jsi mě jasně že 4096 . jdu to zkoušet.
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 36 hostů