■ 연산자
- 프로세서 내의 연산 장치를 사용하기 위한 수단
- 논리 연산을 기본으로 함
■ 논리 회로
- 대표적인 연산자 : AND, OR, XOR, NOT (NAND, NOR, XNOR는 not을 붙인 것이라 생각하자.)
- 프로세서의 기본 소자
■ NOT
- 0을 1로 / 1을 0으로
■ AND (논리곱)
- 둘중의 하나가 0이면 0 (어느 하나라도 0이면 0이다.)
- 둘다 1이어야지 1
■ OR (논리합)
- 둘중의 하나만 1이어도 1
- 둘 다 0이어야지 0
- 논리곱과는 반
■ XOR (익스클루시브 OR / 배타적 논리합)
- 서로 다르면 1
- 서로 같으면 0 (1,1=0 / 0,0=0)
■ 대입 연산자 ( = , equal, 이꼴)
- 같다가 아니다. 우변의 [결과값, 값]을 좌변에 [Copy, 저장]이다.
- 좌변에는 변수(저장 공간)만 올 수 있다.
- 결론적으로 좌변은 저장공간 / 우변은 값이라 보면 된다.
■ Literal (상수값 / 문자, 숫자가 있다. 문자에 대해 알아보자)
■ 아스키 문자
- 1byte에 0~127개까지 표현 가능하다.
- 공백은 ' ' 이다. 즉 '' 안에 공백이 있어 이렇게 쓸 수 있다.
■ 문자
- '' 안에 쓴다. 예를들면 'A'이다.
■ 이스케이프 문자
- ' ₩n' 에서 n은 문자가 붙는 것이다.
- 일종의 특수 문자이다. 이 키보드 자판에 표현할 수 없는 문자를 표현할 때 쓴다.
■ 유니 코드
- 유니코드는 2byte를 사용한다.
- 자바의 문자형은 2byte이다. 그래서 유니코드를 쓸 수 있다.
- 만약 자바가 아닌 C언어라면 오류가 생긴다. 왜? C언어 문자형은 1byte 이기 문에
■ 아스키 코드 값
- ch= 'A'; 와 ch=0x41;은 값다.
- 왜냐하면 아스키 코드에서 A는 0x41 이기때문에, 자바에서는 문법적으로 허용이 된다.
■ Literal (상수값 / 숫자에 대해 알아보자.)
- 우리가 앞서 배울때, 몇 bit로 이루어져 있냐에 따라 byte short int long로 구분했다.
- 그러나 상수값에서 숫자는 몇 진수인가에 따라 앞에 붙는게 달라진다.
■ 정수
진수 표현 | 표기법 | 얼마나 쓰이는가 |
10진수 | 아무것도 안 붙인다. | 자주 쓰인다. |
2진수 | 0b 로 시작된다. | 가끔 쓰인다. |
8진수 | 0 로 시작된다. | 거의 안쓴다. |
16진수 | 0x 로 시작된다. | 대부분 쓰인다. |
■ 실수 - 소수점 표기
- 대부분의 실수 표현법
■ 실수 - 지수표기
- 공학에서 쓰는 방법
- 여기서 3.14e-10은 3.14 x 10^-10 이라 보면 된다.
- 즉, e는 밑수 10을 의미하고, 대문자(E)도 가능하다.
■ 이스케이프에 대해
- 줄바꿈, 복귀, ₩, ' , " 이렇게 많이 쓰이는 것만 기억해두자.
■ char ch1 = '1';
- 문자이다.
■ char ch2 = 1;
- 숫자이다.
■ 비트 연산자
- 일반적으로 byte 단위로 계산함. 그러나 비트 단위로 계산이 필요한 경우도 있다.
- 근데 앞서 봤던 Byte 단위의 계산과 방식이 동일하다.
- 즉, 소프트웨어는 Byte로 처리한다.그런데 bit단위로 조절해주는 것이 bit 연산자이다.
- Byte > bit > gate를 통과 > gate를 통과하면서 NOT AND OR XOR로 계산하는 것이다.
■
■ NOT
■ AND
1011 1000 a
1100 0011 b
1000 0000 a&b의 결과값
■ OR
1011 1000 a
1100 0011 b
1111 1011 a|b의 결과값
■ XOR
1011 1000 a
1100 0011 b
0111 1011 a^b의 결과값
■ 위의 문제풀이는 따로 안나와서 모른다. bit set, bit mask만 알아두자.
■ bit set
- 한 비트를 무조건 1 로 만드는 것
■ bit mask
- 한 비트를 무조건 0으로 만드는 것
1. 비트 이동 연산자 << 에 대해
-예시
1010 1100
1011 0000
붉은색 : 이동
파란색 : 버려짐
밑줄친 검정색 : 새로 채워야할 부분. 0으로 채우면 된다.
2. 비트 이동 연산자 >> 에 대해
2가지 경우가 있다. (음수, 양수)
■ >> 양수일 때 :
- 제일 앞 MSB가 0이다.
- 왜냐하면 1byte 기준 [ -128 ~ 127 ]까지 표현이 가능하다.
- 그리고 양수일 때는 0~127까지다. 그리고 127은 0111 1111 이다. 그래서 제일 앞이 항상 0 이다.
-예시
0101 0011
0000 1010
붉은색 : 이동
파란색 : 버려짐
밑줄친 검정색 : 새로 채워야할 부분. 여기서는 그냥 0 으로 채우기만 하면 된다.
■ >> 음수일 때 :
-예시
1010 0011
1111 0100
붉은색 : 이동
파란색 : 버려짐
밑줄친 검정색 : 새로 채워야할 부분. 여기서는제일 앞(밑줄 친 붉은색)이 1이기 떄문에 111로 채운다.
3. 비트 이동 연산자 >>> 에 대해
- 이 경우는 빈자리는 무조건 0 으로 채운다.
■ AND
- 참 참 = 참
- 참 거짓 = 거짓
- 거짓 거짓 = 거짓
■ OR
- 참 참 = 참
- 참 거짓 = 참
- 거짓 거짓 = 거짓
■ NOT
- 참은 거짓으로
- 거짓은 참으로
■ 참고
- 앞서 배웠던 & | ~의 경우는 [bit별 연산자]이다.
- [논리 연산자]는 Boolean 이라고 해서 true false로 구별한다.
■ 1byte정수값 + 1byte정수값 을 더하는 회로
■ 참고로 컴퓨터는 산술 연산(+ - * / )을 별로 안좋아한다. 자원을 많이 잡아먹으니까. 힘들다!
■ 그래서 앞서 배웠던, 비트연산자와 논리연산자를 좋아한다.
■ % 모듈러 연산자
- 한마디로 나눗셈을 하고 남은 나머지를 말한다. 몫이 아닌!
- 꽤 자주 쓰인다. 언제? 예를 들면 3의 배수를 찾아라!. 3으로 나눴을 때 나머지가 0이면 3의 배수이니까.
■
■ 복합 대입 연산자
- 무슨 말인가? 아래의 예시를 참고
- ( a += b; ) a와 b를 더해라. 그리고 그것을 a에 넣어라. 결론 a = a + b;
-결론은 a 와 b를 계산하고 a에 넣으면 된다!
■ 증감 연산자
■
■
■
■
■ 형 변환
- 변수 형을 프로그램 수행 중에 변경하는 것
- 자동 형 변환은 정보 손상이 없을 때 이루어짐
- 강제 형 변환은 개발자가 정보 손상에 대한 책임을 짐
학습정리
1. 연산자
- 프로세서의 논리 회로를 사용함
- 논리 회로를 기반으로 다양한 연산자들이 만들어지고 제공됨
2. 연산자의 종류 및 특징
- 대입 연산자: r-value를 l-value로 복사
- 비트 연산자: 비트 별로 연산할 수 있는 방법을 제공
- 논리 연산자: 논리 값을 피 연산자로 하여 논리 값을 결과로 내어 놓는 연산자
- 산술 연산자: 더하기, 빼기, 곱하기, 나누기를 수행
- 관계 연산자: 두 가지 값의 관계를 확인하며, 그 결과는 논리 값임
'컴퓨터공학 > 자바프로그래밍' 카테고리의 다른 글
6. 조건문 심화 (0) | 2024.06.29 |
---|---|
5. 프로그램을 프로그램답게 만드는 조건문 (0) | 2024.06.12 |
3. 데이터를 담는 공간 변수와 기본 연산자 (0) | 2024.05.30 |
2. Java의 역사와 특징 (0) | 2024.05.25 |
1. 프로그래밍 언어 개론 (0) | 2024.05.22 |