Bitové operace ve vyšších jazycích

gl

Re:Bitové operace ve vyšších jazycích
« Odpověď #330 kdy: 09. 09. 2016, 15:00:42 »
Pokud chceš posouvat, použiješ posun. Pokud chceš spočítat mocninu 2, můžeš použít umocňování i posun. Posun je asi rychlejší, umocňování je explicitnější a pro přepis matematického vzorce IMHO vhodnější.

Posun je výpočet mocniny dvou. Ale NEMŮŽEŠ je libovolně zaměňovat, protože ty operátory dělají úplně jinou matematickou operaci. Jeden z těch operátorů je definovaný jen na integerech a druhý na floatech (i integerech). Občas ty operátory dávají stejné výsledky, ale vypočítají se úplně jinou metodou. Že je v pythonu nějaká optimalizace pro 2**N kde N je integer je irelevantní. Jsou to jiné operátory s jinou funkcí a chovají se i navenek jinak.

Naposledy. Pokud přepisuji nějaký vzorec, kde vystupuje mocnina dvou, tak požiju mocninu dvou i pokud by měla celočíselný exponent. Klidně se pohoršuj. Když někdo použije posun jedničky, vůbec mi to nevadí. Nejsem fašista jako ty. Abych se pořád pohoršoval nad cizím kódem. Mě zajímá, jestli to funguje. Pro typovou kontrolu používám vhodnější nástroje.

Posun má spoustu jiných použití než výpočet mocniny dvou. Tam ho samozřejmě použiju.


ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:Bitové operace ve vyšších jazycích
« Odpověď #331 kdy: 09. 09. 2016, 15:02:47 »
Obávám se, že většina nových a moderních jazyků bitové operace má bitové operace implementovány. Nemá smysl je diskvalifikovat kvůli této podmínce.

Otázka je, jestli by vůbec něco smysluplného v čem programovat při této podmínce zbylo :D

gamer

Re:Bitové operace ve vyšších jazycích
« Odpověď #332 kdy: 09. 09. 2016, 15:04:53 »
Naposledy. Pokud přepisuji nějaký vzorec, kde vystupuje mocnina dvou, tak požiju mocninu dvou i pokud by měla celočíselný exponent. Klidně se pohoršuj. Když někdo použije posun jedničky, vůbec mi to nevadí. Nejsem fašista jako ty. Abych se pořád pohoršoval nad cizím kódem. Mě zajímá, jestli to funguje. Pro typovou kontrolu používám vhodnější nástroje.

Taky už naposledy. Nepohoršuju se nad cizím kódem, pohoršuju se nad tím, že rozbiješ fungující kód a ještě to obhajuješ. I mě zajímá, jestli to funguje, takže se ti snažím vysvětlit, že bys kód rozbíjet neměl a měl bys operátory << a ** používat správně.

javaman ((

Re:Bitové operace ve vyšších jazycích
« Odpověď #333 kdy: 09. 09. 2016, 15:05:00 »
Tento thread dokazuje, že to zjevně není triviální problém a spousta lidí s tím má potíže...

Triviální to je, jen zdejší lopaty nechtějí pochopit, že vývojáře vůbec nezajímá.

gamer

Re:Bitové operace ve vyšších jazycích
« Odpověď #334 kdy: 09. 09. 2016, 15:07:28 »
Triviální to je, jen zdejší lopaty nechtějí pochopit, že vývojáře vůbec nezajímá.
Vývojáře to zajímá, lopaty to nezajímá.


javaman ((

Re:Bitové operace ve vyšších jazycích
« Odpověď #335 kdy: 09. 09. 2016, 15:08:58 »
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

gamer

Re:Bitové operace ve vyšších jazycích
« Odpověď #336 kdy: 09. 09. 2016, 15:10:40 »
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

Už víš, proč jsi lopata? Nebo to přenecháš java compileru?
Kód: [Vybrat]
class javaman
{
    public static void main(String[] args)
    {
        if (pow(62) != shift(62))
        {
            System.out.println("javaman je borec");
        }
        if (pow(63) != shift(63))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static double pow(long exponent)
    {
        return Math.pow(2, exponent);
    }

    public static double shift(long exponent)
    {
        return 1L << exponent;
    }
}

ByCzech

  • *****
  • 1 848
    • Zobrazit profil
    • E-mail
Re:Bitové operace ve vyšších jazycích
« Odpověď #337 kdy: 09. 09. 2016, 15:12:05 »
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

Když někdo umí víc, tak pro normálního je to důvod pro jeho obdiv nebo výzvou k dohnání ve znalostech. Ubožák se místo toho snaží z jeho větších znalostí udělat něco méně a poplivat to. I takoví jsou mezi námi ;D

balki

Re:Bitové operace ve vyšších jazycích
« Odpověď #338 kdy: 09. 09. 2016, 15:20:50 »
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

Už víš, proč jsi lopata? Nebo to přenecháš java compileru?
Kód: [Vybrat]
class javaman
{
    public static void main(String[] args)
    {
        if (pow(62) != shift(62))
        {
            System.out.println("javaman je borec");
        }
        if (pow(63) != shift(63))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static double pow(long exponent)
    {
        return Math.pow(2, exponent);
    }

    public static double shift(long exponent)
    {
        return 1L << exponent;
    }
}

Ah to porovnavanie doublov cez  "!='' .




Ked nadavat javamanovi do lopat, tak aspon menej hlupo.


tisnik

Re:Bitové operace ve vyšších jazycích
« Odpověď #339 kdy: 09. 09. 2016, 15:22:08 »
kokoti uz tady nespamujte. delejte neco uzitecnyho. co kdyby jsme zalozili vlastni forum, ktere by bylo na urovni?
Ne, fórum se nezakládá, ale musí se naprogramovat. Vše co bylo v minulosti uděláno je špatně a bylo by dobré si to udělat po svém a dokonale. Kdo do toho jde? :D By mě zajímalo, na čem by to ztroskotalo, ale předpokládám, že už na výběru jazyka :D

Samozrejme je potreba vybrat predevsim jazyk "novy" a "moderni", tedy BEZ bitovych operaci a podobnych veci z doby kamenne :)

Obávám se, že většina nových a moderních jazyků bitové operace má bitové operace implementovány. Nemá smysl je diskvalifikovat kvůli této podmínce.

No ale potom se spousta lidi dostane do deadlocku, protoze tvrdi:
1) bitove operatory v jazyku XYZ nemusim znat protoze.... (doplnit neco o dinosaurech a knihovnach, FE...)
2) znam jazyk XYZ

gamer

Re:Bitové operace ve vyšších jazycích
« Odpověď #340 kdy: 09. 09. 2016, 15:23:48 »
Ah to porovnavanie doublov cez  "!='' .
Oprav to, vytvoř elementární příklad, který bude lepší. Rád se na něj podívám.

v

Re:Bitové operace ve vyšších jazycích
« Odpověď #341 kdy: 09. 09. 2016, 15:24:25 »
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

Už víš, proč jsi lopata? Nebo to přenecháš java compileru?
Kód: [Vybrat]
class javaman
{
    public static void main(String[] args)
    {
        if (pow(62) != shift(62))
        {
            System.out.println("javaman je borec");
        }
        if (pow(63) != shift(63))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static double pow(long exponent)
    {
        return Math.pow(2, exponent);
    }

    public static double shift(long exponent)
    {
        return 1L << exponent;
    }
}

Ah to porovnavanie doublov cez  "!='' .




Ked nadavat javamanovi do lopat, tak aspon menej hlupo.
nejde 2 na celé číslo v iee754 vyjádřit přesně?

gamer

Re:Bitové operace ve vyšších jazycích
« Odpověď #342 kdy: 09. 09. 2016, 15:27:39 »
nejde 2 na celé číslo v iee754 vyjádřit přesně?
Jde. Nicméně i tak má ten kód svoje problémy. Balki se akorát chytil elementárního příkladu, který se snažil být co nejjednodušší. Tak jsem zvědavý, jak to udělá lepší.

balki

Re:Bitové operace ve vyšších jazycích
« Odpověď #343 kdy: 09. 09. 2016, 15:30:30 »
Právě lopaty umí jen tři věci a z toho jedna je bitový posun. Když jim to sebereš, zničíš jim svět. Vývojář má normálně takový záběr, že ho to vůbec nerozhodí, když to neví.

Už víš, proč jsi lopata? Nebo to přenecháš java compileru?
Kód: [Vybrat]
class javaman
{
    public static void main(String[] args)
    {
        if (pow(62) != shift(62))
        {
            System.out.println("javaman je borec");
        }
        if (pow(63) != shift(63))
        {
            System.out.println("javaman je lopata");
        }
    }

    public static double pow(long exponent)
    {
        return Math.pow(2, exponent);
    }

    public static double shift(long exponent)
    {
        return 1L << exponent;
    }
}

Ah to porovnavanie doublov cez  "!='' .




Ked nadavat javamanovi do lopat, tak aspon menej hlupo.
nejde 2 na celé číslo v iee754 vyjádřit přesně?

Staci spravit nejake matematicke operacie, a ked clovek caka 3, ma 2.99999999999 a je v pr...

balki

Re:Bitové operace ve vyšších jazycích
« Odpověď #344 kdy: 09. 09. 2016, 15:34:50 »
nejde 2 na celé číslo v iee754 vyjádřit přesně?
Jde. Nicméně i tak má ten kód svoje problémy. Balki se akorát chytil elementárního příkladu, který se snažil být co nejjednodušší. Tak jsem zvědavý, jak to udělá lepší.

BigInteger ma metodu pow a metodu equals. Tak by som to zriesil cez to.