비트연산자, 암호화, 복호화 와 제어문
1. 비트연산자
(1) 비트(bit) 정보량의 최소단위
1bit 표현할 수 있는 수 0,1
1bit로는 정보를 알기 힘드니 1byte = 8bit를 정보의 기본 단위로 사용하는 것
장점 : 사람의 언어를 컴퓨터의 언어로 바꾸는 과정을 생략하기 때문에 속도가 빠름
(2)비트논리연산자
1) 논리곱 &(AND) 두 비트가 모두 1이면 1
연산식 결과
1 & 1 1
1 & 0 0
0 & 1 0
0 & 0 0
2) 논리합 | (OR) 두 비트 중 하나라도 1이면 1
연산식 결과
1 | 1 1
1 | 0 1
0 | 1 1
0 | 0 0
3) 배타논리합 ^(XOR) 두 비트가 서로다르면 1
연산식 결과
1 ^ 1 0
1 ^ 0 1
0 ^ 1 1
0 ^ 0 0
4) 논리부정연산자 ~(NOT) 0을 1로, 1을 0
부호비트도 반대로 바꿔줌(양수는 음수로, 음수는 양수로)
부호비트 0 : 양수, 1 : 음수
연산식 결과
~1 0
~0 1
<증명> ~5 => -6 / ~10 => -11
컴퓨터는 덧셈만 가능 , 뺄셈을 구현하려면 음수가 필요하다
비트중 가장 앞에 있는 비트를 최상위 비트라고 한다(부호비트)
~01010 => 1 최상위 비트가 음수로 변환이되서 음수가 출력됨
1 + -1 = 0
-1 => 1111(4bit 연산이므로 4비트 짤린다)
01111 => 15
11111 => -1
~6 => 0 0110 => 0 1001
1)) 반전되서 나온 결과 비트 1001에 1의 보수(비트 반전)
0110
2)) 1의 보수에 2의 보수를 취한다(+1)
0111
3)) 앞에 -부호를 붙인다
-7
5) 쉬프트 연산자(이동)
<<(left shift, 좌 쉬프트), A << B A를 B만큼 좌로 비트이동
<<(right shift, 우 쉬프트), A >> B A를 B만큼 우로 비트이동
넘치면 잘린다
빈칸은 양수일 때 0으로, 음수일 때는 1로 채워진다
6) 부호비트
최상위 비트가 부호비트로 사용된다
0 : 양수, 1 : 음수
2. 암호화, 복호화
암호화와 복호화는 데이터를 안전하게 전송하거나 저장하기 위한 과정
(1) 암호화
원본 데이터를 변형하여 외부에서 알아보기 어려운 형태로 만드는 과정
특정 알고리즘과 키를 사용하여 원본 데이터를 암호화
(2) 복호화
암호화된 데이터를 다시 원래의 형태로 되돌리는 과정
암호화 할 때 사용한 알고리즘과 동일한 키를 사용하여 암호화된 데이터를 해동
(3) 대칭키
하나의 키를 사용하여 데이터를 암호화하고 복호화하는 방법
(4) 비대칭키
두개의 서로 다른 키를 사용하여 데이터를 암호화하고 복호화하는 방법
공개키(누구난 알 수 있는 키), 개인키(소유자만 알고 있는 비밀키)
데이터를 공개키로 암호화하면 개인키로만 복호화 할 수 있고
개인키로 암호화 한 데이터는 공개키로만 복호화 할 수 있음
3. 제어문
프로그램의 흐름을 제어한다
조건문 : 조건에 따라서 결과가 달라질 때
반복문 : 반복할 문장이 있을 때
기타제어문 : 반복문 주로 사용함, 반복문을 강제종료하거나 일정조건을 건너뛸 때
(1) 조건문
1) if문
if 조건식{
참일 때 실행할 문장;
}
2) if~else문
if 조건식{
참일 때 실행할 문장;
}else{
거짓일 때 실행할 문장;
}
3) if~else if~else문
if 조건식1{
조건식1이 참일 때 실행할 문장;
}else if 조건식2{
조건식1이 거짓이고 조건식2가 참일 때 실행할 문장;
}else if 조건식3{
조건식1,2가 거짓이고 조건식3이 참일 때 실행할 문장;
}else{
조건식1,2,3이 모두 거짓일 때 실행할 문장;
}
* if : 조건식이 true이면 영역안의 코드가 실행됨
else if : 위의 조건식이 거짓이고 else if의 조건식이 참이면 영역안의 코드가 실행됨
else : 위의 조건식이 모두 거짓일 때 실행
else if, else문은 if문 없이는 사용이 불가능하다!!
* if~if문, if~elseif문의 차이
if문은 모든 조건식을 확인한다
if(10 == 10){
syso("실행");
}
if(10 < 15){
syso("실행");
}
if~else if문은 위에서 참이면 아래는 조건을 확인하지 않고 건너뛴다
if(10 == 10){
syso("실행");
}else if (10<15){
syso("실행");
}