Логическое отрицание. Непонятки в понимании.

Рейтинг: 1Ответов: 1Опубликовано: 13.11.2014

Собственно вопрос. Есть, допустим, число 9. В двоичном представлении = 1001. Если логическое отрицание инвертирует разряды, то из 1001 должно получиться 0110. Однако шарп, питон и остальные языки программирования возвращают -1010 (-10 в десятичной). В чём подвох?

Ответы

▲ 3Принят

Подвох в том, что число хранится не в виде 1001, а как минимум 00001001 (если тип переменной байт). Если тип целый, то там будет и 32 бита. И все они инвертируются.

А вот почему получается -10 - это просто, нужно вспомнить, как хранятся отрицательные числа - в дополнительном коде. И если самый левый бит единица, то это будет отрицательное число.