Změna bitu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Změna bitu – C / C++ – Fórum – Programujte.comZměna bitu – C / C++ – Fórum – Programujte.com

 

Huge0
Návštěvník
10. 12. 2006   #1
-
0
-

Zdravím všechny programátory na programujte.com!
Potřeboval bych poradit jak by měla vypadat funkce, která změní určitej bit na určitou hodnotu.
Jestli už taková funkce existuje, což asi jo, tak prosím kde?

Hlavička by měla vypadat asi takto:

int chngbit(int cislo, int NaKolikatePozici, bool NaCoZmenit)  // Ten bool, který udává na jakou hodnotu se ten bit má změnit

{ // bude možná muset být kvůli posunu bit...
// Tady nevím, cislo &= (NaCoZmenit<<NaKolikatePozici);
// return cis;
// dělá bohužel něco jiného.
};


Dík moc za odpovědi.

Nahlásit jako SPAM
IP: ...–
aleshus
~ Anonymní uživatel
23 příspěvků
10. 12. 2006   #2
-
0
-

To Huge:zm?na bitu na n?jak? se d? prov?st vymaskov?n?m pomoc? OR. Pokud pou?ijete nap? masku 00000100 co? je dekadicky 4 pomoc? p??kazu cislo|= 4 (cislo=cislo | 4) tak se t?et? bit zmen? na 1. Pokud byste tento bit cht?l zm?nit na 0 pou?ijete masku inverzn? 11111011 a m?sto bitov?ho sou?tu bitov? sou?in tedy cislo&=4..

Nahlásit jako SPAM
IP: ...–
Matěj Pácha0
Super člen
10. 12. 2006   #3
-
0
-

Tak to j? bych pou?il logickou funkci XOR, proto?e tam nemus?m p?em??let, jestli chci bit zm?nit na nulu nebo na jedni?ku. Maska pro XOR je jednoduch?, na m?st? toho bitu, kter? chci zm?nit je jedni?ka, na ostatn?ch pozic?ch nula.

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
aleshus
~ Anonymní uživatel
23 příspěvků
10. 12. 2006   #4
-
0
-

To paashi:to je samozrejme taky mozny ale ja to pochopil tak, ze Huge chce presne rict na co se ma bit zmenit a ne ho pouze preklopit.

Nahlásit jako SPAM
IP: ...–
Matěj Pácha0
Super člen
10. 12. 2006   #5
-
0
-

To aleshus: Sorry, nečtu pozorně. Ale aspoň tu jsou obě možnosti...
:ms_0859:

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
aleshus
~ Anonymní uživatel
23 příspěvků
11. 12. 2006   #6
-
0
-

To paashi: ok ;)

Nahlásit jako SPAM
IP: ...–
Huge0
Návštěvník
11. 12. 2006   #7
-
0
-

Díky moc, takže ta funkce má vypadat asi takhle:



int chngbit(int cis, int NumberOfBit, bool to) // Změní bit na pozici NumberOfBit
{
if(to)
return (cis |= (1<<NumberOfBit));
else
return (cis &= INT_MAX - (1<<NumberOfBit));
};


Je to nejjednodušší řešení Thx.

Nahlásit jako SPAM
IP: ...–
Huge0
Návštěvník
11. 12. 2006   #8
-
0
-

Jo, když už jsem tu založil téma, tak pls ještě 2 otázečky:

Lze nějak v konzoli dosáhnout toho aby znaky následující např. za b nepřepsali původní text?
Jak funguje ten vertikální tabulátor (vždycky mi to vypíše jen takovýto samčí pohlaví:) ?

Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
11. 12. 2006   #9
-
0
-

To Huge:

#
# Lze n?jak v konzoli dos?hnout toho aby znaky n?sleduj?c? nap?. za  nep?epsali p?vodn? text??


Nepouzivat b.


#
# Jak funguje ten vertik?ln? tabul?tor (v?dycky mi to vyp??e jen takov?to sam?? pohlav?:)


Vertikalni tabulator??

Co se tyce zjednoduseni, tak snad misto toho odcitani, radeji pouzit negaci ~:


int chngbit(int cis, int NumberOfBit, bool to) // Zmìn? bit na pozici NumberOfBit
{
if(to)
return (cis |= (1<<NumberOfBit));
else
return (cis &= ~(1<<NumberOfBit)); // bitovy operator negace
};

Nahlásit jako SPAM
IP: ...–
Huge
~ Anonymní uživatel
57 příspěvků
12. 12. 2006   #10
-
0
-

Jejda, tak tos mě asi úplně nepochopil, myslel jsem b a za tím znak, že by ho nepřepsal, ale zůstaly by tam vypsané oby znaky.
Představ si to na manuálním psacím stroji:



napíšeš -
dáš návrat o znak (b)
napíšeš |


...vzniklo něco jako +. Jde tohle v konzoli??

Vertikální tabulátor == 'v'

Za negaci díky.

Nahlásit jako SPAM
IP: ...–
Peter D.0
Expert
12. 12. 2006   #11
-
0
-

Mysl?? s??tavanie znakov ??, tak to asi nep?jde, konzola vyp??e len to ?o je v ASCII tabu?ke. :ms_0605:

Nahlásit jako SPAM
IP: ...–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
Huge
~ Anonymní uživatel
57 příspěvků
12. 12. 2006   #12
-
0
-

To je škoda, s tím by se daly dělat zajímavé věci.

Nahlásit jako SPAM
IP: ...–
Huge0
Návštěvník
13. 12. 2006   #13
-
0
-

Když už jsem teda tak nějak sklouzl k funkcím konzole, chci se ještě zeptat, jak udělat aby se během výpisu dalo zmáčknout nějaká tlačítko (kromě pausebreak), které by ukončilo nebo pozměnilo výstup (Bratr chce program, který vypisuje náhodně jedničky a nuly a po zmáčknutí mezerníku přestane).
Jak?

Díky všichni (a hlavně ti co odpoví:).

Nahlásit jako SPAM
IP: ...–
aleshus
~ Anonymní uživatel
23 příspěvků
13. 12. 2006   #14
-
0
-

To Huge: myslíš něco takového?

while (1)

{
cout << rand()%2 << "/b";
if (kbhit()) break;
}


jestli je ten zápis randu správně za to úplně neručím už je to nějakej pátek co jsem to použil naposeldy, ale myslím že to takto je.. a ten kbhit() najdeš v conio.h.. to aby to byl právě mezerník se dá ošetřit jsou tam i funkce které ti vrátí číslo klávesy která byla stisknuta.. ;)

Nahlásit jako SPAM
IP: ...–
Pedro0
Stálý člen
14. 12. 2006   #15
-
0
-

njn ale toto je len pre win a s borland prekladacom

Nahlásit jako SPAM
IP: ...–
Vsetci ste blazni, to len ja som lietadlo
Huge0
Návštěvník
15. 12. 2006   #16
-
0
-

Jen pod Windows ano, to je možné, ale jinak jsem s tím (conio.h) vesele programoval i s DevC++.
Znáš něco lepšího a multiplatformního PaLaDiN?
//čaus.

Nahlásit jako SPAM
IP: ...–
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, 25 hostů

Podobná vlákna

Vymazání bitů — založil oxidián

Ocislovani bitu — založil drobas

Testování bitu. — založil zbynek

NASM - výměna bitů — založil Thomasso

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ý