2013-10-02 1 views
1

C#을 사용하여 C++ 부동 소수점에 정의 된 모듈러스 연산자가 없다는 사실에 놀랐습니다. 비트 연산자도 분명히 없습니다. 나는 더 많은 것을 배우기로 결정했고 어떤 기본 유형에 대해 연산자가 정의되어 있고 어떤 것이었지만 그 특성을 찾을 수 없는지에 대한 차트를 찾아 보았습니다. http://en.wikipedia.org/wiki/C%2B%2B_operators각 기본 유형에 대해 어떤 연산자가 정의되어 있습니까?

나는, 그러나, 기본 유형 각각에 대해 정의 된 사업자 모르는 :

나는 모든 사업자가 무엇인지하고 오버로드하는 방법을 알고있다.

+2

언어 사양이 아닙니까? 어쩌면 한 곳에서 모든 것이 아닐지 모르지만 각 유형에 대한 섹션을 보면 오퍼레이터가 정의 된 것을 말할 것입니다. – Barmar

+0

부동 소수점 모듈에 fmod()를 사용합니다. 그리고 비트 연산자는 부동 소수점 표현 (너무 많은 OS가 런타임에서 변경할 수 있도록 가수와 지수 간의 할당)에 너무 구체적입니다. – Bathsheba

+0

@ Bathsheba 어떤 OS에서 그렇게 할 수 있습니까? 나는 그것을 본 적이 없다. 부동 소수점은 운영 체제가 아닌 IEEE 754 및 하드웨어에 의해 정의됩니다. – EJP

답변

1

모든 연산자는 정수 유형 (char, short, int, long, long longenum)에 대해 정의된다. 그들은 부동 소수점에 대한 많은 이해가되지 않기 때문에, <<, >>, ~, &, |^ : 소수점 형식 (float, doublelong double)를 부동의 경우 %하고 "비트"연산자 없음이없는 . 예를 들어, 3.3^6.8에서 무엇을 기대합니까? [1] 또는 1.9 % 13.4? [1] 부동 소수점 나누기에는 "나머지"가 없으므로 실제로 제공해야하는 것을 상상하기가 어렵습니다.

의견에서 언급 한 것처럼 fmod%과 비슷한 것을합니다.

[1] 이것은 수사적 질문입니다. 아무도 좋은 답을 찾지 못할 것이라고 생각합니다.

+0

Re [1] : 사람들이 대답을 내놓았습니다. 따라서 'fmod'입니다. –

+0

이 질문과 그 링크에 따르면 : http://stackoverflow.com/questions/1723575/how-to-perform-a-bitwise-operation-on-floating-point-numbers 부동 소수점에 비트 연산이 유용 할 수 있습니다 유전자 알고리즘의 숫자. 부동 소수점은 기본적으로 비트 연산을 지원한다고 가정했을 것입니다. 다음과 같은 것 : reinterpret_cast <부호없는 int> float1 (비트 연산) reinterpret_cast <부호없는 int> float2 – Limne

+0

비트 연산으로 부동 소수점 숫자의 COMPONENTS를 조작하는 것은 유효한 것입니다. 다음과 같이 32 비트 부동 소수점을 음수로 만듭니다.'float f; f = 8.3f; * reinterpret_cast (& f) | = 0x80000000; - 또는 가수를 조작하여 가중치를 내림차순으로 바꿀 수 있습니다. 즉, 가장 낮은 비트를 변경하거나 지수를 추출하여 하나씩 더하여 2를 곱합니다. 하지만 부동 소수점 숫자에 비트 조작을 사용하지 않습니다. 부동 소수점 숫자의 비트가 정수 (또는 정수 필드 집합) 인 것처럼 변경합니다. –

관련 문제