본문으로 바로가기
728x90

 

* 자바의 n 진수 변환

 

-> Integer 클래스의 메소드를 사용하여 변환한다.

 

2진수 변환 : Integer.toBinaryString(int num) -> String 형태

8진수 변환 : Integer.toOctalString(int num) ->String 형태

16진수 변환 : Integer.toHexString(int num) -> String 형태

 

 

 

참고로 System.out.printf("%출력타입",num);과 같은 형태로도 사용이 가능하다.

 

출력 타입

%d:10진수, %o:8진수, %x:16진수(소문자), %X:16진수(대문자)

 

 

#1031

 

문제 설명   

10진수를 입력받아 8진수(octal)로 출력해보자.

참고
%d(10진수 형태)로 입력받고,
%o를 사용해 출력하면 8진수(octal)로 출력된다.

입력

10진수 1개가 입력된다.
단, 입력되는 정수는 int 범위이다.


출력

8진수로 출력한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        int n=sc.nextInt();
        
        System.out.println(Integer.toOctalString(n));
        
        
    }
 
}
 
 

 

 

 

#1032

 

문제 설명   

10진수를 입력받아 16진수(hexadecimal)로 출력해보자.

참고
%d(10진수 형태)로 입력받고
%x로 출력하면 16진수(hexadecimal) 소문자로 출력된다.

10진법은 한 자리에 10개(0 1 2 3 4 5 6 7 8 9)의 문자를 사용하고,
16진법은 한 자리에 16개(0 1 2 3 4 5 6 7 8 9 a b c d e f)의 문자를 사용한다.
16진수의 a는 10진수의 10, b는 11, c는 12 ... 와 같다.

입력

10진수 1개가 입력된다.


출력

16진수(소문자)로 출력한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        int n=sc.nextInt();
        
        System.out.println(Integer.toHexString(n));
        
        
    }
 
}
 
 

 

 

#1033

 

문제 설명   

10진수를 입력받아 16진수(hexadecimal)로 출력해보자.

참고
%d(10진수 형태)로 입력받고
%X로 출력하면 16진수(hexadecimal) 대문자로 출력된다.

10진법은 한 자리에 10개(0 1 2 3 4 5 6 7 8 9)의 문자를 사용하고,
16진법은 한 자리에 16개(0 1 2 3 4 5 6 7 8 9 A B C D E F)의 문자를 사용한다.
(알파벳 대소문자는 표현만 다르고 같은 값을 의미한다.)
16진법의 A는 10진법의 10, B는 11, C는 12 ... 와 같다.

입력

10진수 1개가 입력된다.


출력

16진수(대문자)로 출력한다.

 

* 방법 : 내장함수를 사용

 

toUpperCase() : 문자열을 모두 대문자로 변환해준다.

toLowerCase() : 문자열을 모두 소문자로 변환해준다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        int n=sc.nextInt();
        
        System.out.println(Integer.toHexString(n).toUpperCase());
        
        
    }
 
}
 
 
 

 

 

#1034

 

문제 설명   

8진수로 입력된 정수 1개를 10진수로 바꾸어 출력해보자.

참고
%o로 입력받으면 8진수로 인식시켜 저장시킬 수 있다.
%d로 출력하면 10진수로 출력된다.

예시
int n;
scanf("%o", &n);
printf("%d", n);
(C언어에서 소스 코드 작성 시 0으로 시작하는 수는 8진수로 인식된다. int a = 013; // 10진수 11과 같은 값)

입력

8진 정수 1개가 입력된다.


출력

10진수로 바꾸어 출력한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        String n=sc.nextLine();
        
        //문자열로 입력받은 후,
        //Integer.parseInt(문자열, 원하는 진수)
        
        int num=Integer.parseInt(n,8);
        //8진수로 변환
        System.out.println(num);
        //그에 대한 값을 10진수로 출력
        
    }
 
}
 
 
 

 

 

#1035

 

문제 설명

16진수로 입력된 정수 1개를 8진수로 바꾸어 출력해보자.

참고
%x(영문자 소문자) 나 %X(영문자 대문자)로 입력 받으면
16진수로 인식시켜 저장시킬 수 있다. %o로 출력하면 8진수로 출력된다.

C언어에서 소스 코드 작성시 0으로 시작하는 수는 8진수로 인식된다.
또한 소스코드 내에서 //로 시작하면 1줄 설명을 넣을 수 있다.
여러 줄을 설명(주석) 을 넣을 경우 /* 와 */ 사이에 작성하면 된다.

예시
int n;
scanf("%x", &n); //소문자로 16진수 입력
printf("%o", n);

입력

16진 정수 1개가 입력된다.
(단, 16진수는 영문 소문자로 입력된다.)


출력

8진수로 바꾸어 출력한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        String n=sc.nextLine();
        
        int num=Integer.parseInt(n,16);
        
        System.out.println(Integer.toOctalString(num));    
        
    }
 
}
 
 
 

 

 

 

#1036

 

문제 설명   

영문자 1개를 입력받아 아스키 코드표의 10진수 값으로 출력해보자.

참고
아스키 코드는
(ASCII, 미국표준코드, American Standard Code for Information Interchange)
영문자, 특수 문자 등을 저장할 때 사용하는 표준 코드이다.

컴퓨터로 저장되는 모든 데이터는 2진 정수화되어 저장되는데,
영문자와 특수기호 등을 저장하는 방법으로 아스키코드가 기본적으로 사용된다.

예를 들어 영문 대문자 "A"는 10진수 65를 의미하는 2진수 값으로 저장된다.

입력

영문자 1개가 입력된다.


출력

아스키코드 값을 10진수로 출력한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        char c=sc.nextLine().charAt(0);
        
        int n=(int)c;
        
        System.out.println(n);
        
    }
 
}
 
 

 

 

#1037

 

문제 설명   

10진 정수 1개를 입력받아 아스키 문자로 출력해보자.
단, 0 ~ 255 범위의 정수만 입력된다.

입력

10진 정수 1개(0 ~ 255 범위)가 입력된다.


출력

아스키코드 값을 문자로 출력한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        int n=sc.nextInt();
        
        char c=(char)n;
        
        System.out.println(c);
        
    }
 
}
 
 
 

 

 

#1038

 

문제 설명   

정수 2개를 입력받아 합을 출력하는 프로그램을 작성해보자.
(단, 입력되는 정수는 -1073741824 ~ 1073741824 이다.)

입력

2개의 정수가 공백으로 구분되어 입력된다.
** 주의 : 계산의 결과가 int 범위를 넘어가는지를 잘 생각해 보아야 한다.


출력

두 정수의 합을 출력한다.

 

 

* 주의 

 

정수형 byte -128 ~ 127
short -32768 ~ 32767
int -2147483648 ~ 2147483647
long -9223372036854775808 ~ 9223372036854775807

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        long a=sc.nextLong();
        long b=sc.nextLong();
        
        System.out.println(a+b);
        
    }
 
}
 
 
 

 

 

#1039

 

문제 설명  

정수 2개를 입력받아 합을 출력해보자.
단, 입력되는 정수는 -2147483648 ~ +2147483648 이다.

참고
+ 연산자를 사용하면 된다.
단, 계산된 결과가 int 형으로 저장할 수 있는 범위를 넘어갈 수 있기 때문에 다른 데이터형을 사용해야 한다.

주의
int 데이터형은 %d로 입출력하고,
long long int 데이터형은 %lld로 입출력한다.

입력

2개의 정수가 공백으로 구분되어 입력된다.


출력

두 정수의 합을 출력한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        long a=sc.nextLong();
        long b=sc.nextLong();
        
        System.out.println(a+b);
        
    }
 
}
 
 
 

 

 

#1040

 

문제 설명   

입력된 정수의 부호를 바꿔 출력해보자.
단, -2147483647 ~ +2147483647 범위의 정수가 입력된다.

참고
단항 연산자인 -(negative)를 변수 앞에 붙이면 부호가 반대로 바뀌어 계산된다.

예시
int a;
scanf("%d", &a);
printf("%d", -a);

입력

정수 1개가 입력된다.


출력

부호를 바꿔 출력한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;
 
public class Main {
    
    public static void main(String[] args) {
        
        Scanner sc=new Scanner(System.in);
        
        int n=sc.nextInt();
        
        System.out.println(-n);
        
    }
 
}
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90