Bună, această întrebare.
Este necesar să se contoriza numărul de biți de date, inclusiv int tip (Java). O soluție, de exemplu, există o metodă (dintr-un articol de pe același amplasament cu privire la operațiunile binari):
Aici clar: vom verifica bitul cel mai puțin semnificativ bit și-1 și imediat după biții de schimbare cu-umplere la zero, în cele din urmă ajunge la zero și de a obține numărul de 1 biți.
Și articolul continuă soluție chiar mai bună, nu pot să-l înțeleg în același loc:
Este scris: „Pentru aceasta, considerăm expresia numărului de (n - 1) Acest număr este diferit de n în care în loc de ultimul bit de bani, el a avut 0 și toți biții ulterioare sunt 1.“.
De fapt, nu pot înțelege. Ei bine, n = 5 sau n = 0b101 și n-4 = 1 sau n-1 = 0b100, adică 101 și 100.
Nu văd un citat „este diferit de n în care în loc de ultimul bit de bani el 0 și toți biții ulterioare egal cu 1“. Cel mai mic bit este 0 la patru, dar de mai jos este, de asemenea, 0 și 1 nu.
Undeva am tuplyu, dar eu nu înțeleg cum n = n (N - 1) funcționează. Din numărul de expresie ++ este evident că, la fiecare iterație ne sunt garantate pentru a obține biți COUNT unitate.
Spune-mi, ce este esența, și îmi pare rău pentru peretele de text.
Despre acesta din urmă știa despre operațiunea De asemenea, este de înțeles, dar încă, în general, nu până la sfârșitul anului. Deplasare la dreapta și compara LSB 1 cap aparent perceput. Se pare că (n-1) este aceeași ca n, dar acesta din urmă este un singur bit este 0, iar din moment ce după o intervenție chirurgicală în acest caz - 0 din numărul (n-1) și un singur bit de n va fi întotdeauna 0, ne-am aproximativ ciuguli la fiecare iteratie un singur bit (care este ultima din numărul n de înlocuirea acestuia cu 0, până când totul a fost 0) . Am înțeles corect) -? DMDS 28 octombrie '14, la 20:53