it-place.net > Уроци > C-Cplusplus
Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Побитови оператори в C
  1. Побитови оператори в C
     
Автор  das_efx (13.03.2005 23:19)  съобщение до автора
Погледнат  5131 пъти  добави към любими
Оценка  добави коментар
Гласове  5  изпрати на приятел
Коментари  (0)  абонирай се за C-Cplusplus
    Страница 1 / 1

 



Съществуват няколко побитови оператора в C.

& | ^ ~

Нека видим какви фунцкии изпълняват те.

& - Побитов AND

Нека преобразуваме числото 10 в двоичен код и числото 20 в двоичен код.

10 - 1010
20 - 10100

Оператора & Сравнява два бита, ако двата са true (1 и 1) връща 1(true). Какво ще получин като го приложим с горните две числа.

01010
10100

00000 (0)

| - Побитов OR

Оператора | сравнява два бита, ако един от тях е true или и двата са true връща 1(true) в противен случаи връща 0(false).

01010
10100

11110 (30)

^ Побитов XOR(изключващо ИЛИ)

Оператора ^ сравнява два бита, ако един от тях е true връща 1(true), но не и когато и двата бита са еднакви - в такъв случаи връща 0(false).

01010
10100

11110 (30)

~ - Инвертиране

Оператора ~ инвертира битовете. Взимаме числото 25 в двоичен код.

00011001

След изпълнението на оператора ~ двоичния код ще изглежда така.

11100110 (при signed -26)

-26 защото при число със знак(signed) най-старшият бит се използва като флаг за знак, ако той е 1 тогава числото е отрицателно, ако е 0 е положително. Също така, ако флага за знак е 1 всички битове освен флага за знак се инвентират и след това към полученото число се добавя 1 т.е числото 11100110 става 110011001. 0011001 е 25, най-старшият бит е 1 това означава, че числото е отрицателно и към него се прибавя 1. Така числото става -26.

Оператори за изместване

стойност << брой битове
стойност >> брой битове

<< - Оператор за изместване в ляво
>> - Оператор за изместване в дясно

брой битове служи за определяне колко бита да се изместят в ляво или в дясно на стойност.

При изместване в дясно всички битове на стойност се изместват в дясно, в лявата част се слагат нули в зависимост с колко позиции е имзместена стойноста. При изместване в ляво всички битове се изместват с една позиция на ляво, от дясно се слагат нули в зависимост с колко позиции е изместена стойноста. При изместване битовете от краищата се губят.

CODE
1
2
3
4
5
int i = 5;

printf("%dn", i);
i = i << 1;
printf("%dn", i);

Стойноста на 5 в двоичен код е 101.

След изместването в ляво стойноста ще изглежда така

00001010 (10)

Ако иместим битовете с една позиция на дясно

CODE
1
2
3
4
int i = 5;

i = i >> 1;
printf("%dn", i);

00000010 (2)

Тук се вижда, че операторът за изместване >> е еквивалентен на деление на 2, а оператора за изместване << е еквивалентен на умножение по 2.

Всички побитови оператори могат да се прилагат само на char и int.



   


Ключови думи: c C++ побитов оператор двоичен код функция


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008