Hodustory/프로그래밍&DB

[Java] 십진수 <> 이진수 변환

호두밥 2021. 8. 10. 00:15

1. 십진수 > 이진수 : toBinnaryString 사용

long number = 123;
String longbi =  Long.toBinaryString(number);

int number = 123;
String intbi =  Integer.toBinaryString(number);


-----------------------
결과값 1111011

2.  십진수 > 이진수 : 함수 구현

 String bi ="";
 int number = 123;
 while(number>0) {
    		bi =  number%2+bi;
    		number /=2;
   	}
   
 System.out.println(bi);
   
 --------------
 결과값  : 1111011

3. 이진수 > 십진수 : Integer.parseInt, Long.parseInt 사용

String bi = "1111011";
int t1 = Integer.parseInt(bi,2);
int t2 = Long.parseLong(bi,2);

System.out.println(t1);
System.out.println(t2);
---------------------------
결과값
123
123

4. 이진수 > 십진수 : 함수 구현

String bi = "1111011";

int answer = 0;

for(int i = 0; i < bi.length(); i++) {
	int spot = bi.charAt(i) - '0'; 
	if(spot>0)answer += Math.pow(2, bi.length()-i-1);
};

System.out.println(answer);
------------------
결과값
123

* char를 int형으로 변환하기 위해 char에서 '0'을 뺐습니다. 0이 아스키값으로 48이고 1부터는 여기에 1씩 더해갑니다. 9는 아스키코드값이 57이죠. 즉 9를 구하려면 57 - 48을 해주면 되기 때문에 '0'을 빼준겁니다. 

반응형