2014-09-28 3 views
0

어떻게 이진 분수 또는 16 진수 소수로 변환 할 수 Java?Java에서 이진수를 16 진수로 변환하는 방법은 무엇입니까?

그 알고리즘은 무엇입니까?
예를 들어 (11.110) 2를 (3.C) 16

으로 변환하고 16 진수 분수를 보유 할 필요가 있습니까?

PLZ 도움이됩니다. 감사합니다. .

+0

시도해 본 샘플을 추가 할 수 있습니까? –

+0

16 진수 분수 란 무엇입니까? 그것은 분자와 분모의 분수일까요? 따라서 Dec 10/11은 0xA/0xB가 될 것입니까? 문제를 더 잘 설명 할 수 있습니까? (또한 Java가 아니라 JAVA입니다.) –

+0

알고리즘은 십진수 변환과 같습니다. 약간 최적화 할 수는 있지만 처음부터 똑같이 할 것입니다. –

답변

1

이 답변은 하나의 기수를 다른 기수로 변환하는 완전히 작동하는 프로그램을 만드는 방법에 대한 완전한 안내서가 될 수는 없지만 내장형 편집기를 사용하려면 대부분의 단계를 언급합니다. 사용할 수있는 방법.

부동 소수점 숫자를 변환하는 기본 제공 방법은 없지만 정수를 2-36 사이의 임의의 기수와 /로 변환하는 기본 제공 방법이 있습니다. 이진수와 16 진수 사이의 변환 만하면되고 수동으로 수행 할 수도 있습니다 (아래 줄을 더 아래에서보십시오). 그렇지 않으면이 방법을 사용하는 것이 좋습니다.

숫자 (String -representation)에서 기수 점 .을 제거하면 전체 숫자가 표시되지만 기수 점의 오른쪽에 몇 자리 숫자가 있는지 추적합니다.

  • Integer.parseInt(String val, int radix)int로 변환됩니다

    여기에 어떤 기수와 String에서 정수로 변환하는 방법은 세 가지입니다.

  • Long.parseLong(String val, int radix)long으로 변환됩니다.
  • new BigInteger(String val, int radix)BigInteger으로 변환됩니다.

그런 다음 double 또는 BigDecimal A를 숫자로 변환하고, 올바른 번호로 나누어, 제자리에서 기수 포인트를 얻을 수 있는지 확인해야합니다. 예를 들어 (1234) 6을 (12.34) 6으로 6 ÷ 6으로 나눌 수 있습니다.

이제 반쯤 완료되었으며 기본적으로 뒤로 이동하여 숫자를 String (다른 기수)로 변환합니다.

당신이 Stringint/ long/ BigInteger에서 변환 할 단계

, toString를 사용 int에서

  • Integer.toString(int val, int radix) 변환합니다.
  • Long.toString(long val, int radix)long으로 변환됩니다.
  • val.toString(int radix)은 (으)로 변환됩니다. BigInteger

기수 점을 다시 삽입해야합니다.


수동으로 2 진수에서 16 진수로 변환하려면 the same as you would do if they were whole numbers을 사용하고 차이는 거의 없습니다.

기수를 시작으로 왼쪽과 오른쪽으로 4 자리 연속으로 나눕니다. 필요에 따라 선행/후행 0을 추가하십시오. 나머지는 링크에서 설명한대로입니다.

예 : 101011.0110010 1011 . 0110으로 나뉘며 각 세트를 16 진수로 변환하면 2B.6이됩니다.

관련 문제