|
Съществуват няколко побитови оператора в 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
Стойноста на 5 в двоичен код е 101. След изместването в ляво стойноста ще изглежда така 00001010 (10) Ако иместим битовете с една позиция на дясно CODE
00000010 (2) Тук се вижда, че операторът за изместване >> е еквивалентен на деление на 2, а оператора за изместване << е еквивалентен на умножение по 2. Всички побитови оператори могат да се прилагат само на char и int.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









