2014-11-10 3 views
0

내 메서드는 2^10 미만의 모든 int에만 작동하는 것으로 보입니다. 이 값보다 크거나 같으면 2^32를 반환합니다. 내 프로그램이 이걸 어떻게 얻는 지 모르겠습니다. 나는 2^15보다 작거나 같은 모든 int에 대해 작동하도록 만들 필요가있다. 아무도 적어도 2^32를 2^10보다 크거나 같은 int로 반환하는 이유를 알 수 있습니까? 그렇다면 알려주세요.10 진수에서 2 진수로 변환 java

public static int DecToBin(int num) { 
    int binNum = 0; 
    int divisor = num; 
    int mod = 0; 
    int exp =0; 

    while(divisor != 0){ 
     mod = divisor%2; 
     divisor = divisor/2; 
     if(mod==1){ 
      binNum = (int) (binNum + (Math.pow(10, exp))); 
     } 
     exp++; 
    } 
    return binNum; 

} 이러한 목표를 달성하기 위해

+1

이렇게하면 안됩니다. 너는 너무 큰 숫자를 나타 내기 위해 노력하고있다. 2^10을 10^10으로 나타내며, 이는 2^32입니다. 문자열을 사용 하시겠습니까? – njzk2

+0

내 메서드는 int 형식을 반환해야합니다. int가 2^32까지 좋다고 생각했습니다. – user3508348

+0

나는 바보가 아니었다. 당신은 절대적으로 맞습니다. 나는 문자열이 필요합니다. 고맙습니다. – user3508348

답변

1

상시 쉬운 방법은 다음과 같습니다

Integer.toBinaryString(int); 

이이 작업을 수행하는 가장 쉬운 방법이지만, 그것을 더 efficiant 방법들이있을 수 있습니다.

는 희망이 당신이 타코가 지적한 것처럼, 당신은 Integer.toBinaryString(int)를 호출 할 수 있습니다

0

찾고 있었던 것입니다, 그러나 이것은 당신이 방법을 직접 작성해야 할당 또는 뭔가를하는 경우, 여기에 내가 무엇을 할 것이라고한다.

숫자를 2로 나누고, 나머지를 String에 저장하는 메서드를 작성합니다. 다음과 같은 내용이 있습니다 :

String binaryString = ""; 
int value = 100; 
while(value > 0){ 
    int remainder = value % 2; 
    value = value/2; 
    binaryString = remainder + binaryString; 
} 

빠른 콘솔 실행에서 테스트 한 결과 올바른 '1100100'이 생성되었습니다.

편집 나는 이것을 reference으로 사용했습니다.

관련 문제