본문 바로가기

language/자바

자바 2진수 앞에 0 출력

14를 2진수로 나타내면 1110이다

int num = 14;
String a = Integer.toBinaryString(num);  // 1110

내가 원하는건 01110 이다

 

String.format()을 이용하자!

 

답부터 적으면

String b = String.format("%05d", Integer.parseInt(Integer.toBinaryString(14)));
System.out.print(b); // 01110

왜이렇게 되는걸까?

우선 format의 앞에 파라미터를 확인하자

%d -정수

%f -실수

%s -문자열

%5d - 5자리 표현

-> 뒤에값이 5자리 미만이라면 공백으로표시

%05d - 공백대신 0으로 표시

이제 앞에 파라미터는 이해가 되었을 것이다.

그렇다면

Integer.parseInt(Integer.toBinaryString(14))

이건 무엇인고..?

한문장씩 풀어서 이해해보자

Integer.toBinaryString(14)

int형 14를 2진수로 바꾸고 문자열로 저장한다. // "1110"

Integer.parseInt()

받은 문자열을 정수로 바꾼다. // 1110 (천백십)

String.format(%05d, ... )

받은 정수를 형식에 맞춰서 string에 저장한다. // "01110"

이것을 변수를 이용해서 쉽게 나타내보자

int n = 5;
int num = 14;
String c = String.format("%0"+n+"d", Integer.parseInt(Integer.toBinaryString(num)));
System.out.print(c);

"%0"+n+"d"

문자열 연산으로 자리수를 더 쉽게 나타내었다.

 

질문 잘 받아주신 자바 오픈카톡방의 뽀로로라는 아이디를 쓰시고 계신 분께 감사..ㅠㅠㅠ

 

'language > 자바' 카테고리의 다른 글

자바 HttpServletRequest  (0) 2022.01.27
자바 Integer.parseInt() 진수 표현  (0) 2022.01.19
자바 String, StringBuffer, StringBuilder  (0) 2022.01.19
자바 Scanner nextLine 오류 buffer  (0) 2022.01.19
자바 2차원 배열길이 length  (0) 2022.01.19