Побитовое умножение в С++, поразрядный оператор И

С помощью поразрядного оператора И (который записывается как &) можно устанавливать реальные биты в байтах или словах для типов данных char и int.

 

Пример программы, которая меняет регистр английский букв, делает из маленьких заглавные.

Набор ASCII символов опеределен так, что код заглавных и строчных букв отличается на 32 (0010 0000).

 

Следовательно нам нужно в строчной букве поменять 6-й бит.

 

Код буквы 'a' = 0110 0001

Код буквы 'A' = 0100 0001

(биты считаются с конца)

 

Чтобы с помощью логического И поменять только 6-й бит, нужно в двоичном коде буквы 'a' = 0110 0001

изменить шестой бит с 1 на 0. Это можно сделать умножив логически на 0, а все остальные биты оставить НЕИЗМЕННЫМИ, для этого умножаемм логически на 1.

Следовательно нам нужно умножить на 1101 1111

 

Мы знаем что:

0 & 0 = 0

0 & 1 = 0

1 & 0 = 0

1 & 1 = 1

 

Десятичное представление двоичного числа 1101 1111 = 223

 

#include <iostream>
using namespace std;
int main ()
{
    char ch;
    do {
        cin >> ch;
        ch = ch & 223;
        cout << ch;
    } while (ch != 'Q');
    return 0;
}

 

Операция ch = ch & 223; оставляет все биты в переменной нетронутыми, за исключением шестого (он сбрасывается в нуль)

 

 

Поразрядный оператор ИЛИ или как из прописных сделать строчные

Чтобы из прописных в ASCII сделать строчные, нужно изменить 6-й бит (то есть установить его в 1).

Для этого нам нужно использовать ИЛИ с 0010 0000 (десятичное 32)

 

ch=ch | 32;



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы