C++에서 부동형 상수를 이진수로 표현하는 방법은 없습니다. 물론 정수형 상수도
이진수로는 표현할 수 없지만 8진수이나 16진수 표현으로부터 쉽게 변환이
가능하지요. 이런 기능이 필요하다면 이진수 표현의 문자열을 십진수로 바꾸는
함수를 만드시면 되겠네요. 원리는 간단합니다.
"1.111" --> 1 + 1/2 + 1/4 + 1/8 = 1.875
그보다 문자열을 파싱하는 작업이 더 귀찮겠는데요.
그런데 제가 찾던것은.. float 변수에 10진수를 넣는게 아니라 2진수를 입력하는것이었습니다.
작성해주신소스에서
float kaka = 1.1111111111111111111111111;
이렇게 하더라도 이값은 2진수가 아니라 10진수로 인식을 하니까요...
암튼 감사합니다..
C++에서 부동형 상수를 이진수로 표현하는 방법은 없습니다. 물론 정수형
C++에서 부동형 상수를 이진수로 표현하는 방법은 없습니다. 물론 정수형 상수도
이진수로는 표현할 수 없지만 8진수이나 16진수 표현으로부터 쉽게 변환이
가능하지요. 이런 기능이 필요하다면 이진수 표현의 문자열을 십진수로 바꾸는
함수를 만드시면 되겠네요. 원리는 간단합니다.
"1.111" --> 1 + 1/2 + 1/4 + 1/8 = 1.875
그보다 문자열을 파싱하는 작업이 더 귀찮겠는데요.
참고로 C99에서는 부동형도 16진수로 표현하는 것이 가능합니다.
Re: [C++] 2진수의 표현은? ex> 0xFFFF(16진수) , 0777(8진수
이런걸 원하시는 건가요?
이렇게 하시면 되겠지요.
좋은 답변 감사합니다.
unsigned int 에다가 IEEE754 규약대로 float형의 비트값
x xxxxxxxx xxxxxxxxxxxxxxxxxxxxxxx
넣어주고서 %f로 출력하면 부동소수로 출력하는군여..
char형으로 끊어서 확인도 가능하군여..
유용한것 배웠습니다.
그런데 제가 찾던것은.. float 변수에 10진수를 넣는게 아니라 2진수를 입력하는것이었습니다.
작성해주신소스에서
float kaka = 1.1111111111111111111111111;
이렇게 하더라도 이값은 2진수가 아니라 10진수로 인식을 하니까요...
암튼 감사합니다..
int a =
int a = 0b101;
printf("a(%d)\n", a);
위의 결과는...5입니다.
c++엔 없고 C99엔 hexadecimal
c++엔 없고 C99엔 hexadecimal floating constant라고 비슷한 것이 있습니다.
C++11 에 이것이 새로 추가되었는지 아닌지는 모르겠네요.
http://stackoverflow.com/questions/4825824/hexadecimal-floating-constant-in-c
댓글 달기