Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 157

Инверсия битов

~a

–6

Двоичное представление

зависит от размера типа int

<<

Сдвиг влево

a << 1

10

0b1010

>>

Сдвиг вправо

a << 1

2

0b0010

Эти операторы похожи на операторы для работы с множествами, показанные

в главе 3. Оператор & возвращает биты, которые одинаковы в обоих аргументах,

а оператор | возвращает биты, которые установлены в обоих аргументах. Опера-

тор ^ возвращает биты, которые установлены в одном или в другом аргументе, но

не в них обоих. Оператор ~ обращает порядок байтов в одном аргументе, он также

Упражнения

207

изменяет знак, поскольку старший бит целого числа указывает на его знак (1 озна-

чает «минус») в арифметике дополнительных кодов, которая используется во всех

современных компьютерах. Операторы << и >> просто смещают биты влево или

вправо. Сдвиг влево на один бит аналогичен умножению на 2, а сдвиг вправо —

делению на 2.

Упражнения

1. Создайте строку Unicode с именем mystery и присвойте ей значение '\U0001f4a9'.

Выведите на экран значение строки mystery. Найдите имя Unicode для mystery.

2. Закодируйте строку mystery, в этот раз с использованием кодировки UTF-8,

в переменную типа bytes с именем pop_bytes. Выведите на экран значение пере-

менной pop_bytes.

3. Используя кодировку UTF-8, декодируйте переменную pop_bytes в строку

pop_string. Выведите на экран значение переменной pop_string. Равно ли оно

значению переменной mystery?

4. Запишите следующее стихотворение с помощью старого стиля форматирования.

Подставьте строки 'roast beef', 'ham', 'head' и 'clam' в эту строку:

My kitty cat likes %s,

My kitty cat likes %s,

My kitty cat fell on his %s

And now thinks he's a %s.

5. Запишите следующее письмо по форме с помощью форматирования нового

стиля. Сохраните строку под именем letter (это имя вы используете в следу-

ющем упражнении):

Dear {salutation} {name},

Thank you for your letter. We are sorry that our {product} {verbed} in your

{room}. Please note that it should never be used in a {room}, especially

near any {animals}.

Send us your receipt and {amount} for shipping and handling. We will send