Nejste přihlášen/a.

Přihlásit se do poradny

 

Co znamena tento kod v Cecku

Od: molouch odpovědí: 12 změna:

Dobry den,

mohl by mi prosim nekdo vysvetlit co znamena tato operace v jazyku C?

x = (1 << 7);

 

 

12 odpovědí na otázku
Řazeno dle hodnocení

 

 

luke237
hodnocení

0x
Jednicka posunuta o 7 bitu doleva. Vyjde tak cislo 128.
luke237
Wikipedie:
Operators in C and C++
luke237
Oprava odkazu: Operators in C and C++

 

dzordz*
01.02.13 07:50
hodnocení

0x

<< je left shift, první číslo se ve dvojkové soustavě posune o [druhé číslo] bitů doleva a zprava se doplní nulama.

0000 0001, výsledek 1000 0000

V podstatě taky vynásobení x2^7 (pokud se to tam vejde a nezačnou čísla zleva odpadávat). Více viz bitwise operátory.

 

molouch
hodnocení

A kdyby to bylo naopak:x = (1 >> 7);
luke237
Je to trosku slozitejsi (Wikipedie).
Nejpravdepodobne se ti bude zleva nasouvat MSB, tedy v tomto pripade nula, takze vysledek po sedmi posunech bude nula.

 

molouch
hodnocení

A co tento kod?

x = ((0x7<<24)|(0x1<<16));

 

molouch
hodnocení

Kdyz to rozpytvam:x = ((0x7
hm*

Ty nuly jsem nepočítal, ale postup vypadá správně.

luke237
Taky se mi nechce ty nuly pocitat, takze si to prolitneme v hexa *smich*:
0x7<<24 = 0x7000
0x1<<16 = 0x0100
br>secteno, podtrzeno: 0x7100 *smich*
luke237
Kdyz tech 0x7100 prevedu na binarni kod, tak je to :
0000 0111 - 0000 0001 - 0000 0000 - 0000 0000
Porovnanim s tim, co mas ty, tak vidim, ze ti tam ty nuly nejak nevychazeji. :(
luke237
Sakra, ted jsem si vsiml, ze ten prevod do hexa mam spatne. Mam tam jen ty dolni pulky bajtu *zed*.
0x7 <<24 = 0x07 00 00 00
0x1 <<16 = 0x01 00 00 = 0x00 01 00 00
celkem: 0x07 01 00 00
Ted prevod do BIN uz pak mam dobre.
Jeste jednou se omlouvam.

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]