Почему ~ 3 равно -4 в Python? - PullRequest
       37

Почему ~ 3 равно -4 в Python?

2 голосов
/ 12 октября 2010

Я начинаю программировать на Python. Я читаю базовый учебник, но этот момент мне не очень понятен. Буду признателен за любую помощь, которую вы можете мне дать.

Ответы [ 5 ]

9 голосов
/ 12 октября 2010

~ 3 означает «инвертировать» 3. С дополнением до двух для типов данных натуральных чисел это становится -4, поскольку двоичное представление инвертировано (все биты переворачиваются).

4 голосов
/ 12 октября 2010

~ 3 означает «изменить все 1 с 0 на 0 и 0 на 1 с», поэтому если 3 в двоичном виде равно 0000000000000011, то ~ 3 равно 1111111111111100., поскольку первый бит ~ 3 равен 1, это отрицательное число. чтобы выяснить, какое отрицательное число, в комментарии 2s, вы инвертируете все биты и добавляете 1, так что инвертируя мы вернулись к 3, затем добавив 1, мы получим 4.

4 голосов
/ 12 октября 2010

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

0 голосов
/ 12 октября 2010

Это не просто Python, это целочисленное числовое представление почти всех современных компьютеров: дополнение к двум. По определению дополнения к двум, вы получаете отрицательное число, добавляя положительное число и добавляя одно. В вашем примере вы добавили ~, но не добавили его, поэтому вы получили отрицательный знак вашего числа минус один.

0 голосов
/ 12 октября 2010

Это оператор инвертирования, который возвращает побитовую инверсию числа, которое вы ему дали.

...