0
비트 연산자를 사용하여 float 함수 abs를 작성해야합니다.이 함수는 float 값을 반환합니다.abs 함수를 사용하여 float 값을
<
또는 >
을 사용할 수 없습니다.
(float)((int)f^((int)f>>31)) - ((int)f>>31)
시도하지만 -2.5
값을 내가 2.0
을 얻을, 그것은 올바른 아니에요.
도와 주시겠습니까?
비트 연산자를 사용하여 float 함수 abs를 작성해야합니다.이 함수는 float 값을 반환합니다.abs 함수를 사용하여 float 값을
<
또는 >
을 사용할 수 없습니다.
(float)((int)f^((int)f>>31)) - ((int)f>>31)
시도하지만 -2.5
값을 내가 2.0
을 얻을, 그것은 올바른 아니에요.
도와 주시겠습니까?
당신은 할 수있는이
float abs = Float.intBitsToFloat(Float.floatToIntBits(x) & 0x7FFFFFFF);
float의 최상위 비트는 부호 비트입니다. 그래서 ... 비트 단위 & 연산자를 사용하여 해당 비트를 지우고 절대 값을 얻을 수 있어야합니다.
사용이 비트 단위 당신의 마스크로하고 값 :
0x7fffffff
네,하지만 어떻게? Java에서 비트 표현을 얻을 수 없습니다. –
@ chiastic-security : 오, 그렇지만 할 수 있습니다. 머리 속에 보관해야하지만 모든 숫자 값은 비트 단위로 표현됩니다. – Makoto
@ chiastic-security : http://docs.oracle.com/javase/8/docs/api/java/lang/Float.html#floatToRawIntBits-float- 물론 http://docs.oracle.com/javase /8/docs/api/java/lang/Float.html#intBitsToFloat-int- –