[질문] double형에서의 비트 연산..

익명 사용자의 이미지

*^^*
자바를 공부하다가 책에 있는 비트연산문제중에 막히는 부분이 있어서
질문 올립니다.

double 변수를 선언하고 1234.5678과 같은 값으로 초기화하는 콘솔
프로그램을 작성하라. 그 후 값의 정수 부분을 읽어 long 유형
변수에 저장하고, 소수부분의 처음 네 자리를 읽어 short 유형
변수에 저장하라. 정수로 저장되어 있는 두 값을 출력하여
double변수의 값을 표시하라

이건데요. int형으로는 어떻게든 할 수 있겠는데 double나 float또는
char형(가능한가??)으로 할 때는 어떻게 해야 하는지 모르겠어요..

답글주실때 *^^* 꼭! 자바로 않해주셔도 되구요.. c나 c++도 괜찮습니다.
아시는 분은 제발~ 답 좀~ *^^* 자세한 설명도~~

그럼.. 꾸벅~~

익명 사용자의 이미지

부동소수점은 CPU마다 다르므로 비트 연산으로
값을 바꾸는 테크닉을 사용할 수 없습니다.
(만약 특정 CPU에서 성공했다고 해도 이식은 절대 안됩니다)
산술식을 통한 정상적인 방법만을 사용해야 합니다.

심지어 하드워어 레벨이 아닌 소프트워어 에뮬레이션에서
실행될때도 있으므로 생각은 좋았지만...그런건 포기하시고
반도체 내부 자료 표현에 관심을 가져 보심이 내공을 상승시킬
수 있는 좀 더 좋은 방법일 것 같네요.

결론 -> 부동 소수점 연산은 제약이 많습니다.

익명 사용자의 이미지

답변 감사합니다..
막히던 부분이~ 쫙~ 풀렸네요..
답변 감사합니다..

그럼~~ 꾸벅~~

/기회

익명 사용자의 이미지

처음 질문이 비트연산으로 해결할 문제는 아니지만,
부동소수점에 대한 비트연산이 타기종간 이식이 절대 안된다고
볼 수는 없습니다. 왜냐면 4바이트 및 8바이트 부동 소수점은
ieee 규약을 대부분 준수하기 때문입니다.
그 규약은 소프트웨어 에뮬레이션하는 경우도 마찬가지입니다.

예를 들어, double 값을 파일에 이진으로 쓰고 그것을
타기종에서 읽을때는 endian 만 고려하면 대개 잘 읽힙니다.

물론 long double 은 호환성이 떨어집니다.

참고로 다음은 ieee 부동 소수점 표준입니다.

typedef struct
{
unsigned mantissa23;
unsigned exponent8;
unsigned sign1;
} float_t;
typedef struct
{
unsigned mantissal32;
unsigned mantissah20;
unsigned exponent11;
unsigned sign1;
} double_t;
typedef struct
{
unsigned mantissal32;
unsigned mantissah32;
unsigned exponent15;
unsigned sign1;
} long_double_t;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.