2010-08-21 3 views
3

C#에서 32 비트 대신 20 비트만을 사용하여 정수를 더하거나 빼거나 곱하고 나누는 방법은 무엇입니까?20 비트 정수 수학

이러한 연산은 32 비트 정밀도보다 빠릅니까? http://complex-a5.ru/polyboolean/index.html

감사 :

예를 들어이 .NET 라이브러리는 다른 속도를 가진 20 및 30 비트 연산을 특징으로한다.

+7

20 비트 만 사용하려는 이유는 무엇입니까? –

+0

나는 여분의 비공식 데이터를 여분의 비트에 넣고 있다고 의심해야 할 것이다. – cyborg

+0

@ 프랭크 : 비트 수는 연산의 정밀도를 결정합니다. – abenci

답변

0

코드를 직접 작성하지 않고 수동으로 조금씩 움직이게하거나 32 비트 연산을 사용하고 마스킹을 적용하여 사용 가능한 범위를 제한 할 수는 없습니다.

프로세서가 기본적으로 지원하는 32 비트 연산보다 빠르지는 않습니다.

+0

이 .NET 라이브러리가 다른 속도의 20 및 30 비트 산술을 특징으로하는 이유는 무엇입니까? http://www.complex-a5.ru/polyboolean/index.html – abenci

+0

@devdept : 관련 정보를 ** 모두 ** 포함하도록 질문 **을 ** 업데이트하십시오. 의견에 관련 사실을 추가하지 마십시오. –

+1

@devdept : 수행중인 사용자 지정 작업에 따라 달라지며 매우 전문화되어 있습니다. 20 비트 좌표계를 사용하면 어떤 경우에는 더 많은 메모리 효율성을 얻을 수 있습니다. 그러나 정말로 당신은 저자들에게 물어야 할 것입니다. 당신이 달성하려고하는 것은 무엇입니까? –

5

프로세서에 arithmetic units이 있으므로 32 비트 숫자로 작업하는 것이 정말 빠릅니다. 그것은 프로세서에서 "유선"이기 때문에 작성할 수있는 모든 코드보다 빠릅니다.

20 비트 수의 연산은 모듈로 산술 (즉, mod 2^20)으로 시뮬레이션 할 수 있습니다.

2

어떻게// 곱하기 빼기 및 나누기 정수는 20 비트 대신 32 비트 C#으로를 사용하여 추가 할 수 있습니까? 32 비트의 int의 상위 12 비트를 제로로 bitmasking

사용 :

int twentyBitSum = (a + b) & 0xFFFFF; 

이러한 작업은 빠른 32 비트 procision보다 것인가? 하드웨어가 기본적으로 지원하지 않는 크기의 연산을 수행

번호 추가 작품이다.

관련 문제