Я наткнулся на строку кода, используя numpy Python, который выглядел так:
~array([0,1,2,3,4,5,4,3,2,1,0,-1,-2])
И он вывел:массив и применить A -> - (A + 1)
Если так, какой смысл?
Комментарий Криса Лутца правильный.
~ является побитовым оператором отрицания
Похоже, что он поворачивает А в - (А + 1), потому что на многих современных компьютерах отрицательные числа представляются как Дополнение к двум соответствующего положительного целого числа, где число вычитается из 2^(bit length) (это "двукратная степень битовой длины", а не "две эксклюзивные или битовая длина" ...).
2^(bit length)
В такой системе -1 будет представлено как все. Конечно, как и сумма числа и его побитового отрицательного значения, мы имеем ситуацию, когда
a + ~a = -1 => ~a = -1 - a => ~a = -(a + 1)
как вы заметили.
http://en.wikipedia.org/wiki/Bitwise_operation#NOT
Причина, по которой вы получаете отрицательные числа, заключается в том, как они представлены в двоичной форме:
http://en.wikipedia.org/wiki/Two%27s_complement
~ является оператором добавок и, если вы используете с int, его можно использовать в любой программе на Python (он не только numpy)
Смысл в том, чтобы иметь возможность взять дополнение вейлов в массиве.В случае numpy это выглядит как сокращение для:
>>> map(lambda e: ~e, [0,1,2,3,4,5,4,3,2,1,0,-1,-2]) [-1, -2, -3, -4, -5, -6, -5, -4, -3, -2, -1, 0, 1]