Kedysi v Delphi sa dalo jedno 32 bitové číslo rozdeliť na dve 16 bitové (funkcie Hi a Lo). Ako sa to robí v JS? Pomocou bitových posuvov? Viete mi dať prosím príklad? Aj na spojenie aj na rozdelenie.
Dá se to udělat pomocí bitového posunu:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators A nebo pomocí dělení a zbytku po dělení.
Ale ak by sa dalo tak 2 32 bitové čísla spojiť na jedno 64 bitové. a poprosil by som nejaký najefektívnejší spôsob.
Bitové posuvy se v JavaScriptu dělají nad 32bitovými čísly, a typ Number je 64bitový double. Takže byste to musel implementovat pomocí Stringl nebo ArrayBufferu.
Efektivitu v tomhle případě nemá smysl řešit. Za prvé tu operaci asi nebudete provádět moc často, když to děláte v JavaScriptu. Za druhé jste v JavaScriptu moc daleko od strojového kódu. Dnešní „interprety“ JavaScriptu v prohlížečích dělají JIT (Just-in-time) kompilaci do strojového kódu – buď ten kompilátor pochopí, o co vám jde, a přeloží to efektivně, nebo to nepochopí. To ale vůbec nezáleží na tom, jak „efektivně“ to bude napsané, ale jenom na tom, zda rozpozná vzor, který jste použil.
https://tc39.github.io/ecma262/#sec-ecmascript-language-types-number-type2. druhá otázka je k číselným typom v JS. JS má len jeden číslený typ number a to je alternatíva k typu float alebo decimal?
Je to alternativa k double.
Ale upřímně řečeno, je dost divné, že chcete takovéhle operace provádět v JavaScriptu a navíc pomocí typu Number. Bylo by lepší, kdybyste popsal, jaký problém řešíte, protože je dost pravděpodobné, že jste zvolil nevhodné řešení.