Hirdetés

Új hozzászólás Aktív témák

  • Fire/SOUL/CD

    félisten

    válasz !wannabe #489 üzenetére

    Hali!

    Az ndx tömben van tárolva ugyebár, hogy melyik számjegy hányszor fordul elő.
    Mivel én STRING-ként olvasom be, ezért a '0'-'9' számjegyek a karakterkódjukkal vannak jelen a STRING-be, vagyis hexa 0x30-0x39. Ebből kell 0-9 indexet csinálni.
    pl

    a '9' ascii kódja 0x39 binárisan 00111001, a 0x0f binárisan 00001111

    00111001 AND 00001111 = 0000 1001 azaz 9.
    ( az AND ott lesz 1, ahol mindkét számban az azonos bitpozíción 1 van)
    tehát ebben az esetben az ndx[str[i] & 0x0f]++ az ndx[9]++ lesz, azaz a tömb 9. indexén lévő elem értékét megnöveli egyel.

    Meg lehetett volna így is oldani ndx[str[i]-0x30]++ vagy ndx[str[i]-'0']++
    Csak azért választottam az AND-es módszert, mert a logikai műveletek fontos része minden programozási nyelvnek(AND, OR, XOR, NOT stb)

    Fire.

    [ Szerkesztve ]

    Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)

Új hozzászólás Aktív témák