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