ahoj chcem sa opytat ci by ste mi pomohli s touto ulohou "Spočítejte všechy bity, které jsou nastavené na jedničku v zadaném bajtu." Niesom si isty ci rozumiem zadaniu, ide o to ze napr. cislo 12 v dvojkovej sustave je 1100 a ja mam zistit kolko je bitov v cisle 1100? Ako sa to robi vlastne matematicky? dakujem
Fórum › Java
Spočítejte všechy bity, které jsou nastavené na jedničku v zadaném bajtu
#1 Marek
http://stackoverflow.com/questions/5267803/counting-number-of-ones-in-binary-representation-of-a-number
řeší se to často, takže pro příště postup:
1) vymyslím to
pokud ne:
2) Google
nic tam není
3) fórum
:D
a úplně nejsnažsí, pokud se nechceš srát bit. operátorama je si to převést na string (pokud to v něm nemáš) a jen projet cyklem znak po znaku a spočítat 1
#5 ingiraxo
Ano ale sak ani tie bit operatory niesu zase az tak nepochopitelne a zle.
int cislo = nieco; // nahras cislo
int pocetJednotiek = 0;
// int ma 32 bitov a ty ich prejdes vsetky
for ( int i = 0, n = 32; i < 32; i++) {
// kontrolujes ci je na danom bite 1
if ( (1<<i) & cislo != 0){
pocetJednotiek++;
}
}
Toto urcite nieje najefektivnejsie, da sa to este upravit, ale nema to od toho daleko.
#1 Marek
Funguje to tak ze si zoberes cislo a snazis sa ho cele preist bit po bit-e. Dolezity je tam akurat ten if. on jednoducho kontroluje ze ak bitshift 1 o i napr. (i = 3, 1<<3 = 00..001000) ma bitovu zhodu s cislom tak to urcite nieje 0 a vtedy vies ze na danom bit-e ma cislo urcite jednotku ( cislo = 0..0101011010 => 0..01000 & 0..0101011010 = 0..01000 lebo 4 bit je v cisle 1 ak by nebol tak dostanes 0), ak nie tak dostanes 0 a mas ze ak sa sa to v tom ife == 0 tak len pokracujes dalej a hladas az po 32 bit a tam skoncis;
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Dotaz vracejici hodnoty, které jsou v sloupci nejméně 2x — založil Babe magnet
Jaké jsou důležité prvky, které návrháři loga nyní uvažují? — založil hadiyabarakahea
Horní 4 bity - dolní 4 bity — založil RePRO
Php iclude vlada navic jednicku — založil tribalcz
Převod bajtů na MB — založil Nazghul-CZ
Moderátoři diskuze