Пример упражнения Python 55
Тема:Научитесь использовать побитовый оператор НЕ ~.
Пояснение:
Двоичные числа хранятся в памяти в форме дополнительного кода.
Побитовое НЕ: инвертировать каждый бит двоичного числа, 0 становится 1, 1 становится 0.
Старший бит — это знаковый бит: 0 для положительных чисел и 1 для отрицательных чисел.
Для положительных чисел старший бит равен 0, а остальные биты представляют само значение (в двоичном виде). Например, дополнительный код +42 равен 00101010.
Для отрицательных чисел возьмите дополнительный код абсолютного значения, инвертируйте его побитово, затем прибавьте 1 ко всему числу, чтобы получить дополнительный код этого числа. Например, дополнительный код -42 равен 11010110 (00101010, инвертированное побитоворавно 11010101, плюс 1 даёт 11010110).
Шаги вычисления для ~9:
转二进制:0 1001 计算补码:0 1001 按位取反:1 0110
Преобразовать в прямой код:
按位取反:1 1001 末位加 1:1 1010 符号位为 1 是负数,即 -10
Пример
# -*- coding: UTF-8 -*-
a = 7
b = ~a
c = -7
d = ~c
print ('Результат побитового НЕ для переменной a: %d' % b)
print ('Результат побитового НЕ для переменной c: %d' % d)
Результат вывода приведённого выше примера:
变量 a 取反结果为: -8 变量 c 取反结果为: 6
Пояснение:
-
~7, выполняя побитовое НЕ для 7, дополнительный код 7 равен 00000111, инвертирование дополнительного кода даёт 11111000, старший бит 1 является знаковым битом, указывая на отрицательное число, поэтому целое число, соответствующее этому дополнительному коду, равно -8.
-
~-7При выполнении побитового НЕ для -7 дополнительный код -7 равен 11111001, инвертирование дополнительного кода даёт 00000110, старший бит 0 является знаковым битом, указывая на положительное число, поэтому целое число, соответствующее этому дополнительному коду, равно 6.
100 примеров на Python