|
| Техники за побитова манипулация и приложения |
|
|
| Автор |
blowfish (19.08.2007 13:03) |
 |
съобщение до автора |
|
| Погледнат |
10223 пъти |
 |
добави към любими |
|
| Оценка |
 |
 |
добави коментар |
|
| Гласове |
2 |
 |
изпрати на приятел |
|
| Коментари |
(4) |
 |
абонирай се за C-Cplusplus |
|
|
|
|
Страница 1 / 5 |
|
|
|
Ако ви е омръзнало да четете от книгите какво е побитов AND, XOR, OR или ляво/дясно изместване, а в същото време не сте сигурни как и за какво можете да ползвате на практика побитови операции, то тази статия е точно за вас. Тук няма да изброяваме побитовите оператори или да показваме формалните дефиниции на побитовите операции, а ще се съсредоточим върху някои основни техники за побитова манипулация и приложенията им. Истина е, че повечето книги, които са ми попадали само загатват темата, подминавайки истинската същност, без да показват на читателя нищо повече от списък с побитови оператори и формалната дефиниция на побитовите операции. Това оставя едно впечатление у начинаещите, че едва ли не побитовите операции са “тъмна индия”, без реално разбиране защо и как трябва да се ползват.
Причини за прилагане на побитова манипулация
Главната първопричина е стремежа да се оползотвори максимално пространството във всеки байт. Друго нещо е и факта, че всяка побитова операция съответства на конкретна процесорна инструкция, а това прави оперирането върху групи от битове изключително бързо. В криптографията пък доста често се използва свойството на XOR операцията за обратимост.
Случвало ли ви се е например, да имате променлива от тип int, която ще ползвате със стойности само в ограничен интервал, например от 0 до 500? Най-голямото число в интервала, 500, в двоична форма се представя като 111110100. Следователно вие няма да използвате повече от 9 бита, а разполагате с цели 32. Така вие похабявате 23 бита, които винаги ще бъдат изключени, и ще заемат място в паметта. Как бихте се справили с този проблем?
Компютърните архитектури не ви позволяват да имате променливи с дължина в битове не-кратна на 8, поради простия факт, че е прието един байт да е 8 бита, и байта е неделима единица от гледна точка на паметта. Не случайно типа bool е една абстракция и в езика C той не съществува. С други думи, възможно е да имате променливи с дължина от 8, 16, 24, 32, 40 бита и т.н., но не и от 9 бита в нашия случай. Дори и да изберем променлива short която е 16 бита, отново ще има неоползотворено място. Решението е да използваме останалото място за да отделим други стойности.
За да можем да “разцепим” нашата променлива на битове и да четем/записваме статуса на всеки един бит, а също така и на групи от битове вътре в променливата, се налага да ползваме побитови операции.
Още уроци от тази рубрика
|
|
| За автора: blowfish |
|
Благовест Буюклиев има 10+ години опит с програмирането на C/C++, 7+ години опит с PHP и обширни познания в съвременните Web технологии. Като програмист и проектант на софтуер най-много цени добре проектирания, оформен, документиран, логически издържан и ефективен код. Работил е за фирми в България и чужбина, последната му страст е проектиране и имплементация на TCP сървърни приложения за Linux.
Чрез статииите си в it-place.net би искал да предаде част от знанието и опита си на максимално широк кръг хора в България. |
| |
|
| 1 посетител чете този урок (0 потребители и 1 гост) |
|
|
Активни потребители:
---
|
| |
|
|