문제 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 -> 0
, 0 -> 1
로 바꾼 후 그 값을 10진수로 출력한다.
코드
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로 받아야겠다!
다른 문제 풀이가 보고싶다면?