2016-10-17 2 views
2

나는 포트에 자바 스크립트에 파이썬 라이브러리를 시도하지만, 둘 사이의 수치 차이를 발견 해요 ... 파이썬으로비트 단위 시프트 정밀

, 1057618395136 >> 16 == 자바 스크립트 16137976 , 1057618395136 >> 16 == 16120

정수 정밀도를 자바에서 53 비트, Math.pow (2, 53) == 9007199254740991입니다. 여전히 bifshift 작업의 범위에 있습니다. 내가 실종 됐어?

답변

4

JavaScript 비트 연산자는 부동 소수점 값을 32 비트 정수로 자릅니다. 따라서 64 비트 부동 소수점 값이 53 비트 정수를 포함 할 수는 있지만 시프트 연산자를 사용하여 53 비트를 모두 활용할 수는 없습니다.

자바 스크립트에서 오른쪽으로 16 비트 이동하려면 65536으로 나눌 수 있습니다.

+0

감사합니다. 호기심에서 벗어나 (이러한 미세 최적화는 무시할 수 있음을 알고 있습니다.) 비트 시프트와 부문 간의 성능에는 차이가 있습니까? – Martijnh

+0

@Martijnh 자바 스크립트 런타임은 2의 거듭 제곱으로 나눈 사실을 인식 할 가능성이 높습니다. 저가의 휴대 전화를 제외한 대부분의 최신 하드웨어는 아마도 64 비트 시프트 연산을 수행 할 수 있습니다. 실제 구현을하든, 나는 모른다. – Pointy