필자는 (다소) 보완에 익숙하지만 파이썬 2.7과 관련하여 재교육을 사용할 수 있습니다.~ 0b1이 파이썬 2.7에서 -2를 출력하는 이유는 무엇입니까?
왜 ~0b1
은 -2
으로 인쇄됩니까?
나는 1의 보수가 1을 0으로 변환하고 그 반대도 마찬가지라는 것을 알고 있습니다. 에 0b0
또는 0
을 인쇄 할 것으로 예상됩니다.
print
은 자동으로 바이트 리터럴을 int
의 형식으로 변환합니까?
도움을 주시면 감사하겠습니다.
필자는 (다소) 보완에 익숙하지만 파이썬 2.7과 관련하여 재교육을 사용할 수 있습니다.~ 0b1이 파이썬 2.7에서 -2를 출력하는 이유는 무엇입니까?
왜 ~0b1
은 -2
으로 인쇄됩니까?
나는 1의 보수가 1을 0으로 변환하고 그 반대도 마찬가지라는 것을 알고 있습니다. 에 0b0
또는 0
을 인쇄 할 것으로 예상됩니다.
print
은 자동으로 바이트 리터럴을 int
의 형식으로 변환합니까?
도움을 주시면 감사하겠습니다.
0b1
은 0b0000...01
(정수 1)을 쓰는 또 다른 방법입니다. ~
하면 1 -> 0
및 0 -> 1
(부호 비트 포함) 비트 단위 보수를 얻을 수 있습니다 그래서 당신은 얻을 : -2
입니다
0b111....10
합니다.
당신의 대답은,이 질문 (http://stackoverflow.com/questions/8305199/the-tilde-operator-in-python)의 가장 중요한 답변과 결합되어 무슨 일이 일어 났는지 이해할 수있었습니다. 감사합니다. – MSD
* 리터럴 *이 아닙니다. 그것은 다른 타입의'int' 리터럴입니다. 여러분은'int'를 바이너리로 표현할 것입니다. * 항상 int *이므로 전환이 없습니다. –
@ juanpa.arrivillaga 의견을 주셔서 감사합니다. 그건 좀 설명해. – MSD
즉, '0b10000','0x10' 및 '16'은 동일한'int '객체에 대한 모든 리터럴입니다. 기본적으로'int'가 화면에 출력 될 때 십진수 표현이 출력됩니다. –