int를 float (부호없는 것으로 반환되지만 float으로 해석 됨)로 변환하려면 어떻게해야합니까? 유니온, 비트 연산, 제어 로직 (if/while), + 및 - 등의 고수준 언어 구문을 사용할 수 없습니다.int를 C로 플로트 변환 (캐스팅 없음)
답변
확실히. 원시 바이트 버퍼에서 부동 소수점 숫자를 만들 수 있습니다. 단 정밀도 float
은 IEEE-754에서 32 비트 값으로 표시되며 정수 공간을 매우 쉽게 나타낼 수 있습니다. wikipedia entry on IEEE floating point은 다양한 형식을 설명합니다. 당신이해야 할 일은 설정하거나 테스트 할 비트를 찾아내는 것입니다. 비트에 대한 좋은 설명은 wikipedia page on single-precision을 참조하십시오. 여기에 시작 :
float convert_int(unsigned int num) {
float result;
unsigned int sign_bit = (num & 0x80000000);
unsigned int exponent = (num & 0x7F800000) >> 23;
unsigned int mantissa = (num & /* insert mask value here */);
/* you can take over from here */
return result;
}
저는 상상력을 많이 잃었지만, 숙제 문제라고 생각합니다. 내가 작성한 부분을 이해하고 나면 나머지 부분을 수행하기가 쉬워야합니다. 훨씬 더 좋은 해결책은 union
을 사용하는 것입니다. 그러나 나는 연습으로 독자에게으로 남겨 둘 것입니다. 당신이 다음 그것은 플로트를 반환합니다
float convrt(int x)
{
return x;
}
등의 방법을 사용할 수있는 산술 또는 비트 연산자를 사용하는 싶지 않는 경우
@pst - 예, 아마도 비트 친화적 인 용어로 남겨 두어야합니다. =) –
... 당신은 메인에서 확인할 수 있습니다 ..
void main()
{
int x=5;
cout<<"size of x=" << sizeof(x);
cout<<"size of convrt(x)=" << sizeof(convrt(x));
}
는 그것이 유동 변환 수단 도착
size of x=2
size of convrt(x)=4
로 출력을 제공한다. :-)
title : "no casting". 이것은 암묵적으로 던지다. 그들은 비트의 해결책을 원한다고 명시 적으로 말했습니다. –
- 1. Objective C로 캐스팅
- 2. 처리 : int를 바이트로 변환
- 3. int를 잘린 소수로 변환
- 4. int를 datetime으로 변환
- 5. int를 문자열 변환
- 6. int를 부울로 변환
- 7. LINQ 표현식에서 Int를 String으로 변환
- 8. CString을 mfc로 플로트 변환
- 9. 플로트 변환 문제
- 10. 문자열 플로트/변환 부동
- 11. vb에서 c로 상수 변환 #
- 12. 이미지를 C로 그래픽 변환 #
- 13. CURLcode 변수를 C로 변환
- 14. 코드를 FORTRAN에서 C로 변환
- 15. C++/CLI에서 C로 변환
- 16. Excel에서 C로 LOGINV를 변환 #
- 17. 열거 형 변환 캐스팅
- 18. 자바 캐스팅 변환?
- 19. C# 변환 연산자로 캐스팅
- 20. int를 연결하여 시간 형식으로 변환
- 21. SQL Server에서 INT를 BIGINT로 변환
- 22. int를 변환 하시겠습니까? 조건부로 bool하기
- 23. SQL int를 C# 문자열로 변환
- 24. JNI : 부호없는 int를 jint로 변환
- 25. mysql이 int를 통화로 선택하거나 int를 통화 형식으로 변환 하시겠습니까?
- 26. nib2objc .storyboard를 objective-c로 변환
- 27. C++ 라이브러리를 objective-c로 변환
- 28. C로 전원 쉘 스크립트를 변환
- 29. C++을 objective-c로 변환
- 30. 이진 데이터를 C로 정수로 변환
숙제입니까? 지금까지 뭐 해봤 어? – Levon
이 "float"값에 액세스하려면 어떻게해야합니까? –
Google은 IEEE 부동 소수점 형식 표준을 사용하여 정수를 "분수"로 설정하고 "지수"에 적절한 값을 설정하는 방법을 찾아냅니다. –