모름

정수형식

byte (1byte) :  0~255

short (2byte) : -3만~3만

int (4byte) : -21억 ~21억

long (8byte) : ~~

 

sbyte (1byte) : -128~128 (s는 sin약자)

ushort (2byte) : ~6만

uint (4byte) : ~43억

ulong (8byte) : ~~

 

 

진수(진법)

10진수: 0~9

2진수: 0b00 식으로 표기함, 0b00, 0b01, 0b10, 0b11, 0b100... (0,1,2,3,4...)

16진수: 0~9 abcdef 로 표기함 (15까지 표기할 방법이 없어서 소문자로 표기함) 0x00,0x01,0x02....0x0a...0x0f,0x10,0x11...

 

2진수로 16진수 표기하기 쉬움

0b10001111 => 0x8F

 

 

정수의 범위

sbyte에서 최상의 bit는 음수를 나타냄 (1)000 0000

 

0011 0100 = 52 의 응수를 찾기

1100 1011 처럼 0을 1로, 1을 0으로 바꾸고 1을 더함.

1100 1100 = -52가 되는 것임

 

나중에 비트 연산이 사용되는 기법이 있으니 참고!

 

 

불리언, 소수, 문자, 문자열 형식

불리언: bool 타입은 1byte이다. 왜 굳이 1byte일까? 1bit로도 표현이 가능한데... 왜냐하면 컴퓨터가 1byte를 다루는게 훨씬 빠르기 때문이다.

 

소수: float(4byte), double(8byte) 가 주로 쓰인다. double이 더 정확...

 

문자: char type은 2byte이다. character 타입은 딱 하나의 문자만 담아~ string은 문자의 나열 이며 8byte이다. 

 

 

형식 변환 (형 변환)

형식 변환이란 어떤 데이터를 다른 데이터 타입으로 전환하는 것을 뜻하는데... 경우가 여러가지 있다.

 

1. 데이터 크기가 다른 경우

int a = 1000;
short b = (short)a;

 위의 예에서는 큰 사이즈(int)에서 작은 사이즈(2byte)로 명시적 형 변환을 해주는데... 사이즈가 넘치기 때문에 데이터가 유실되어 형 변환이 된다. (overflow exeption) 반대의 경우는 상관 없음.

 

2. 데이터 크기는 같아도 부호가 다르면

byte c = 255;
sbyte d = c;

위의 경우에는? sbyte는 255를 표현하지 못하는데 어떻게 될까? 결과적으로 sbyte에는 -1이라는 값이 들어감.  변수 c를 이진수로 => 0b11111111 이렇게 표현되는데, 0b11111111를 sbyte로 표현하면 그저 -1되기 때문. 어쨋든 이런 경우는 underflow 라 부름.

 

3. 소수

소수끼리의 형변환은 주로 부정확하고 근사치를 보여주는 경우가 대부분.

float f = 3.1414f;
double d = f;

이 경우에 double d 에는 3.1414라는 정확한 값이 안 들어가고 그 근사치가 입력됩니다.

 

 

데이터 연산

.... 기본적으로 사친연산 가능하고, 나머지 연산 (%) 도 있고... 증가 연산자 ++, 감소 연산자 -- 등 이 있다. 기본적인 내용이라 패스.

 

 

비트 연산

잘 쓰이진 않지만, 알아두면 좋아요~

 

연산자 종류에는 <<, >>, &, |, ^, ~가 있어요.

 

<< 1은 1bit를 왼쪽으로 한 칸 이동시킴, >> 1 도 마찬가지, 여기서 중요한 점은... int일 경우에는 음수 부호를 가지고 있는데, >>1 을 할 경우 음수부호가 오른쪽으로 딸려가면서, 다시 음수부호가 갱신됨. 즉 헷갈림... 그래서 왠만하면 int 쓰지말고 uint 를 쓰는 식으로 하는 걸 권장(?)

 

&(and), |(or), ^(xor), ~(not)... 이 추가적으로 더 있다. 서버쪽? 아이디 만드는데 쓰는 경우가 있나봄.

 

xor이 자주 쓰이는 경우가 있는데 암호학(?), xor 연산을 두 번 해주면 원래 값으로 돌아오는 성질 때문에.

 

 

연산 우선 순위

1. ++ --

2. * / %

3. + -

4. << >>

5. < >

6. == !=

7. &

8. ^

9. |

우선순위 외우기 어려우니깐 헷갈리는 부분은 () 쳐줘서 우선순위 강제해주면 됨.