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

Bity – C / C++ – Fórum – Programujte.comBity – C / C++ – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Martin
~ Anonymní uživatel
1377 příspěvků
22. 8. 2012   #1
-
0
-

Ahoj, 

proč tento zápis 

char dpoved[0]=0x81

int i=odpoved[0]^(fcs>>8)

vrátí jiný výsledek než stejný zápis ovšem s neznaménkovým char?

unsigned char dpoved[0]=0x81

int i=odpoved[0]^(fcs>>8)

není z pohledu bitu jednou jestli jde o znamenkový či neznaménkový char?

Nahlásit jako SPAM
IP: 188.120.221.–
Reklama
Reklama
KIIV+42
God of flame
22. 8. 2012   #2
-
0
-

si to preloz do assembleru a podivej, co se tam deje...

kazdopadne u znamenkoveho se posun provadi tak, ze zaporne znamenko tam zustava na miste (ted si nejsem jist, jestli to dela jina instrukce nebo az prekladac)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Martin
~ Anonymní uživatel
1377 příspěvků
22. 8. 2012   #3
-
0
-

Dííky je to tak, na nějaké články jsem už o tom narazil

Nahlásit jako SPAM
IP: 188.120.221.–
ondra.holub+1
Stálý člen
22. 8. 2012   #4
-
0
-

#1 Martin
Ještě dodám k odpovědi od KIIVa, že pokud to bude v C++, tak char nemusí znamenat, že je to znaménkový typ. Je na překladači, jestli je char znaménkový nebo neznaménkový. Je to každopádně jiný typ než signed char i než unsigned char.

Jestli je to tak i v C nevím. To si už nepamatuji.

Nahlásit jako SPAM
IP: 212.96.189.–
yaqwsx+9
Posthunter
23. 8. 2012   #5
-
0
-

#4 ondra.holub
...a proto na bitové oberace zásadně používám typy uint8_t, uint16_t, atd. Zde je standardem zajištěno, že typ bude mí správné znaménko a velikost.

Nahlásit jako SPAM
IP: 85.160.35.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
hlucheucho+10
Posthunter
23. 8. 2012   #6
-
0
-

#4 ondra.holub
Spíš to závisí na uživateli, aspoň u překladačů které používám je to volitelné, zda int bude znamenat signed int, char bude znamenat signed char. Na to, že je to implementačně závislé i v C, upozorňoval P. Herout ve své Učebnici jazyka C.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
ondra.holub+1
Stálý člen
23. 8. 2012   #7
-
0
-

#6 hlucheucho
intů se to netýká. Je to záležitost jenom charů. int je vždy signed int. Pokud se tedy nejedná o nějaký hodně nestandartní překladač.

Ano, obvykle je parametr určující, jestli je ten char znaménkový nebo ne. Ale lepší je mít zdroják napsaný tak, abych k jeho překladu nepotřeboval žádné speciální parametry. Ušetří se tím hodně práce, pokud se musí portovat na jinou platformu nebo překladač.

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

Podobná vlákna

Příznakové bity — založil yaqwsx

Operace s bity — založil Pavel Prokop

Nejvyšší bity v poli — založil Pajda

Moderátoři diskuze

 

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