2013-02-19 1 views
0

파이썬 유틸리티를 루비로 번역하려고합니다. 문제는 파이썬을 잘 이해하지 못한다는 것입니다.특정 파이썬 (생성자)

유틸리티의 조각은 다음 if 조건이 포함

if bits&0x10==0x10: 

이 무엇을 의미합니까? bits는 변수입니다. 어떤 종류의 "단축" "& &"입니까? 비트가 0이 아니면 이고의 값이 0x10입니까? 감사!

+1

[비트 "와"]를 파이썬 문서를 읽을 수 있습니다 (http://en.wikipedia.org/wiki/Bitwise_operation 16 진수) – JBernardo

+0

BTW, 파이썬에는'&&'가 없으며'bits와 0x10 == 0x10'은 전혀 다른 것을 할 것입니다. – geoffspear

답변

5

  • &는 비트 AND 연산입니다 작동 방법 가변 비트의 5 비트가

    을 설정하면 실제로 확인합니다.

  • 을 0x10는 이진 값의 진수입니다 0b10000 그래서

  • 당신이 이제까지 또한 0b10000

bits에 무엇의 비트 단위 AND 연산을 수행 루비 비트 현명한 테스트를위한 유사한 구조를 지원합니다

if (bits&0x10) 
    ...... 
end 

Tim이 언급했듯이 Python 구문은

if bits&0x10: 
    ....... 
+3

...'bits & 0x10 :'... –

+0

thx로 단축 될 수 있습니다. 루비에 대한 힌트를 주셔서 감사합니다. – Dakkar

6

&은 비트와 연산입니다. 즉이 bits가 조금씩은 0x10 비트와 비교하고, 둘 다, 그 위치에 대한 1의 비트가 있다면 그 결과 이것은 만약 검사되고, 이진수 10000은 0x10 이후 달리 기본적 0

그 위치에 대한 1bits의 다섯 번째 비트는 1으로 설정됩니다.

나는 루비에 대해 많이 모른다.하지만 내 생각에 비트와 연산자가 있어야하고 아마 &이 될 것이다. 따라서이 특정 코드는 결국 루비에서 똑같이 끝납니다.

편집 : Ruby Operators 페이지를 참조하십시오. "Ruby Bitwise Operators"섹션에서, &은 bitwise와 ruby로도 작동하므로 유틸리티의 번역에서 그대로 유지할 수 있습니다. 실제로 작동해야합니다.