Я из фона C и, следовательно, эту проблему в Python действительно путает меняTypeError: плохой тип операнда для унарный ~: «длинный» в Python
Рассмотрим
print ~(1 << 1)
Это правильно печатает -3
.
Рассмотрим этого
print ~(1 << 0)
этих флаги ошибка как
TypeError: bad operand type for unary ~: 'long'
Я проверил для различных других положительных значений счетчика сдвига и она отлично работает. Кажется, что работает только сдвиг нуля. Все подобные сообщения на унарном, что я нашел на SO, рассматриваемый с другими операторами, как +
, -
и т.д., но не ~
Я просто плескаться в Python каждый сейчас и потом, так что я могу отсутствовать что-то глупо, но прибегая к помощи DInt помощи гораздо
PS: Я побежал это на codeskulptor, который, вероятно, с помощью Python 2.7, я не уверен, хотя
EDIT: Это оказывается ошибкой в Codeskulptor. Я написал письмо профессору Рикснеру, который является главным разработчиком, чтобы принять к сведению эту ошибку. Спасибо всем.
Работает для меня (2.7.6). Какую версию python вы используете? –
Кроме того, print ~ (1 << 1) синтаксически неверен в Python 3.0 и выше. 'print (~ (1 << 1))' prints -3. Работает для меня на Python 3.3. Я также запускаю его на IDEONE [здесь] (http://ideone.com/RTfUcf) – ha9u63ar
@hagubear: вопрос помечен как [Python], а не [Python3]. –