За битови операции

За битови операции

В тази статия ще ви кажа как да работят битови операции. На пръв поглед, те може да изглежда малко по-сложно и безполезен, но всъщност това не е така. В това аз ще се опитам да ви убедя.







Изпълнява се операция извършват операции директно на битови числа, така че броят на Примери ще бъде в двоична система.

Аз ще говоря за следните побитови оператори:

  • | (Побитова ИЛИ (OR)),
  • (Побитова (И))
  • ^ (ИЗКЛЮЧВАЩО ИЛИ (XOR)),
(Побитовото отрицание (НЕ))
  • <<(Побитовый сдвиг влево),
  • >> (побитовото отклонение в дясно).
  • операции за малко са изследвани в дискретна математика, както и са в основата на цифровите технологии, тъй като те създадена логика на логическите схеми - основните елементи на цифрови схеми. В дискретна математика, както и в цифровите технологии, масата за истина се използва за описание на тяхната работа. Истината маса, струва ми се, много по-лесно разбиране на битови операции, така че аз ще ги върна в тази статия. Те са, обаче, почти никога не се използва в обясненията на се операция на езици за програмиране от високо ниво.

    За оператори Побитови, вие също трябва да знаете:

    1. Някои от побитовите оператори са подобни изявления, с които може да сте запознати с (, ||). Това е така, защото те всъщност са нещо подобно. Въпреки това, за да ги обърка в никакъв случай невъзможно.
    2. Повечето от битови операции са операции съединение задача.

    Побитова ИЛИ (OR)

    Побитова или оперира логическа или негов еквивалент, но прилагането на всяка двойка от битове на двоичен номер. Bit резултат е 0, само ако и двете съответните битове на 0. Във всички останали случаи, двоичен резултатът е равен на 1. Това означава, че ако имаме следната таблица истина:

    За битови операции






    38 | 53 ще бъдат:

    В резултат на това, ние получаваме 1001002. или 3610.

    С помощта на оператора на растерна графика и можете да проверите дали даден номер е четно или нечетно число. За числа, ако LSB е 1, са повече (на базата на превръщането на двоичен да е десетична). Защо да го правя, ако можете просто да използвате% 2. На моя компютър, например, 1 се извършва с 66% по-бързо. Много добре подобряване на постиженията, казвам ви.

    Изключителен-OR (XOR)

    Разликата между изключителни или и ИЛИ побитовото, че в продължение на 1 само един бит в двойката може да бъде 1:

    За битови операции

    Например, експресия 43 ^ 138 е същото ...

    Резултатът ще бъде 20 310

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

    допълнителен код

    Ето, аз трябва да ви кажа малко за процеса на представляващ отрицателни числа в компютъра, а именно допълнителния код (допълнение две съобщения). Без да навлизаме в подробности, че е необходимо да се улесни аритметични двоични числа.

    Основното, което трябва да знаете за номерата, записани в допълнителния код - е, че MSB е знакът. Ако е 0, то числото е положително, и съвпада с представянето на този номер в пряк код, ако е един - това е отрицателна. Това означава, 10111101 - отрицателно число, и 01000011 - положителен.

    (Използвайте побитово отрицание на това, което е в действителност), за да я превърне в отрицателно число в допълнителния код е необходимо да обърнете всички бита на броя и добавете 1 до резултата.

    Например, ако имаме 109:

    Интересна особеност на ляво от N смяна позиция е, че това е еквивалентно на умножение на броя от 2 N. По този начин, 43<<4 == 43*Math.pow(2,4). Использование сдвига влево вместо Math.pow обеспечит неплохой прирост производительности.

    Побитовото отклонение в дясно

    Както можете да предположите, >> смени бита на определен брой битове в дясно.

    Ако операнда е положителен, празните пространства се запълват с нули. Ако първоначално ние работим с отрицателно число, тогава всички празните пространства отляво са пълни единици. Това се прави, за да се запази характерът в съответствие с допълнителен код, обясни по-рано.

    Защото побитова смяна на дясно - това е действие, противоположно на малко смяна на ляво, тя е лесна за отгатване, че броят на смяна точно до N брой позиции и разделя този номер с 2 N. Отново, това е много по-бързо в сравнение с конвенционалните дивизия.

    Така че сега вие знаете малко повече за дейността и не се страхуват от тях. Мога да се предположи, че няма да използвате >> 1 при всяко делене на 2. Въпреки това, операцията по малко било хубаво да има в арсенала си, а сега можете да ги използвате в случай на нужда, или да отговорите на труден въпрос в интервюто.