[자바JAVA]1059 : [기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기(설명), Scanner로 2진수받기

문제 1059 : [기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기(설명)

입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.
비트단위(bitwise)연산자 ~ 를 붙이면 된다.(~ : tilde, 틸드라고 읽는다.)

1
2
3
4
5
6
7
8
9
10
11
12
13
** 비트단위(bitwise) 연산자는,
~(bitwise not), &(bitwise and), |(bitwise or), ^(bitwise xor),
<<(bitwise left shift), >>(bitwise right shift)
가 있다.

예를 들어 1이 입력되었을 때 저장되는 1을 32비트 2진수로 표현하면
00000000 00000000 00000000 00000001 이고,
~1은 11111111 11111111 11111111 11111110 가 되는데 이는 -2를 의미한다.


예시
int a=1;
printf("%d", ~a); //-2가 출력된다.
  • 입력예시
    정수 1개가 입력된다. (-2147483648 ~ +2147483647)
1
2
  • 출력예시
    비트 단위로 1 -> 0, 0 -> 1로 바꾼 후 그 값을 10진수로 출력한다.
1
-3




코드

1
2
3
4
5
6
7
8
9
10
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
System.out.println(~a);
}
}




배운 지식

괜히 어렵게 생각했다. 2진수를 만들어야한다고 생각해서 사용자로부터 String을 받아서 2진수로 변경 후 비트연산자 적용하여 10진수로 출력하려고 했는데 잘 되지않았다.

앞으로 2진수로 받아야한다하면 그냥 int로 받아야겠다!




다른 문제 풀이가 보고싶다면?