---
layout: post
title:  " C언어 ~ 비트 연산자 "
categories: C/C++
tags: C/C++
author: goodGid
---
* content
{:toc}


```
a = ~(1<<2);
cout << a << endl; // -5

(1<<2) = 0100 = 4 이다.

어떻게 -5가 나오는 걸까?

1. 일단 ~이기 때문에 0100 -> 1011이 된다.
2. 앞에 1은 부호비트이므로 다시 ~을 취한다. 0100 -> 1011 -> 0100
3. 그리고 +1을 해준다. 0100 + 0001 = 0101
4. 그 결과에 -를 붙힌다. 0101 = 5이므로 
5. 최종적으로 -5가 된다.
```













* 정리하자면 ~n는 -n-1로 볼 수 있다.



---

## 관련 질문

* [c언어 NOT 비트 연산자 질문](http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&page=1&sn1=on&divpage=2&sn=on&ss=off&sc=off&keyword=benkim&select_arrange=name&desc=desc&no=6367)
Write C/C++ Post ' C언어 ~ 비트 연산자 '
Write C/C++ Post ' C언어 ~ 비트 연산자 '
