비트 단위 쉬프트 연산자
<< 왼쪽으로 >> 오른쪽으로 전체 비트를 이동시킨다.
왼쪽으로 비트를 1칸 이동할 때마다 값이 2배가 되고 오른쪽으로 비트를 1칸 이동할 때마다 값이 1/2배가 된다.
cout << 10 << 2; //40
cout << 10 >> 1; //5
단 비트를 이동시킬 때 왼쪽이나 오른쪽이 잘리는 것을 감안하고 계산해야 한다.
컴파일러는 뺄셈의 기능이 따로 없어 구현하기 위해 음수를 더하는 방식을 취하는데
음수를 표현하기 위해 2의 보수를 이용한다.
https://cppking.tistory.com/111
[C++] 음수를 비트로 표현하는 방법(2의 보수), 진법 표현
비트는 0과 1로 조합되는 데이터를 나타내는 최소 단위이다. 8비트면 -128 ~ 127까지의 정수를 표현할 수 있다. 1번째 자리부터 7번째 자리까지는 양의 정수를 표현하지만 8번째 자리의 비트가 1이
cppking.tistory.com
형 변환
int iA = (int)3.14f //명시적 형 변환
int iB = 3.14f // 묵시적 형 변환
형 변환은 자료형을 표기해 명시적으로, 아니면 묵시적으로도 할 수 있다.
iA와 iB는 3으로 같은 값을 가진다.
int iA = 3;
cout << iA * 0.5f; // 1.5
이렇게 다른 자료형끼리 연산도 가능한 것도 묵시적 형 변환 때문이다.
정수형이라면 1.5에서 소수부가 잘려 1이 되겠지만 데이터의 손실을 최소화하기 위해
컴파일러가 3을 3.0의 float 형태로 묵시적으로 형 변환을 해준 것이다.
묵시적 형 변환은 컴파일러가 지원해주니까 가능한 것이고 기본적으로 명시적 형 변환을 사용하는 것이 좋다.
축약 연산자
+=, -=, *=, /=, %=, <<=, >>=
증감 연산자
++,--
증감 연산자는 피연산자의 앞에 쓰이는 경우 전위형, 뒤에 쓰이는 경우 후위형이라고 부른다.
int iA = 3;
cout << ++iA; //4
cout << iA++; //3
위 코드가 전위형과 후위형의 차이를 나타내는데,
전위형은 iA에 1을 더한 값을 리턴하기 때문에 4를 출력하고
후위형은 IA를 리턴하고 1을 더하기 때문에 3을 출력한다.
++(++iA) // (o)
(iA++)++ // (x)
위 코드는 첫줄처럼 전위형 연산자를 사용한 것은 성립하지만 후위형 연산자를 사용하는 것은 에러가 나는데,
그 이유는 첫줄에선 iA에 1을 더하고, 1이 더해진 iA는 lvalue이기 때문에 또 1을 더할 수 있지만
두번째 줄에서 iA++는 1이 더해진 iA가 아닌, iA의 값에 1을 더한 rvalue이기 때문에 우변값에 1을 더할 수 없다.
분기문
goto: 지정한 레이블로 점프한다.
goto Jump;
cout << 1 << endl; //(x)출력안됨
Jump:
cout << 2 << endl; //(o)출력됨
if문은 생략.
'Today I Learned' 카테고리의 다른 글
| 23.01.16 - 디버깅 고급 (0) | 2023.01.17 |
|---|---|
| 23.01.13 - 분기문, 난수 생성 (0) | 2023.01.13 |
| 23.01.11 - char, bool , 연산자 (0) | 2023.01.11 |
| 23.01.10 - 메모리, 정수형, 실수형 (0) | 2023.01.10 |
| 23.01.09 - 컴파일러, 네임 스페이스 (0) | 2023.01.09 |