Spočítejte všechy bity, které jsou nastavené na jedničku v zadaném bajtu – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Spočítejte všechy bity, které jsou nastavené na jedničku v zadaném bajtu – Java – Fórum – Programujte.comSpočítejte všechy bity, které jsou nastavené na jedničku v zadaném bajtu – Java – Fórum – Programujte.com

 

Marek
~ Anonymní uživatel
521 příspěvků
20. 2. 2013   #1
-
0
-

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

Nahlásit jako SPAM
IP: 88.212.40.–
KIIV
~ Moderátor
+43
God of flame
20. 2. 2013   #2
-
0
-

bitove operatory... bitove posuny, bitova maska ...

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
crazy
~ Moderátor
+10
Grafoman
20. 2. 2013   #3
-
0
-
Nahlásit jako SPAM
IP: 147.32.31.–
All you need is vision and time.
sleepy0
Stálý člen
25. 2. 2013   #4
-
0
-

Sak mas bite reprezentovany 1 -ami a 0-ami, cize bit moze byt v dvoch stavoch: vypnuty alebo zapnuty (0 ^ 1) napr.(000101010011101) no a ty mas spocitat pocet tych jednotiek.

Nahlásit jako SPAM
IP: 158.195.204.–
ingiraxo+15
Grafoman
25. 2. 2013   #5
-
0
-

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

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
sleepy0
Stálý člen
26. 2. 2013   #6
-
0
-

#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;

Nahlásit jako SPAM
IP: 158.195.204.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 49 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý