Diskuze: Typ long
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 2 zpráv z 2.
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Nejsem javista, ale zkusím si tipnout:
Typ long je 64bitové znaménkové celeé číslo, což implikuje jeho rozsah na -263 - 263−1. To znamená, že jeho bity 0 až 62 zaplní vlastní číslo (v doplňkovém kódu) a bit 63 (ten nejvýznamnější) bude uchovávat znaménko.
Zápis
maska <<= pocetBitu -1;
nastaví bit 63 na 1, je-li pocetBitu rovno 64 (což je v případě druhého volání metody vrat). Tím vlastně vyrobíš číslo -263.
Zápis
maska >>=1
je posunem vpravo o jeden bit. Posuny vpravo existují dva: logický a aritmetický. Tne logický prostě posune všechny bity operandu o jeden doprava a na místo nejvýznamnějšího zapíše nulu. Ten aritmetický místo zápisu nuly kopíruje hodnotu znaménkového bitu. Což by v tvém případě znamenalo, že se maska nikdy nenastaví na nulu, nýbrž bude nakonec vyplněna samými jedničkami.
Nevím jistě, zda operátor >> v Javě implicitně znamená aritmetický posun vpravo (zejména u znaménkového datového typu), ale tebou popisované chování tomu nasvědčuje.
Zobrazeno 2 zpráv z 2.