> Bit ❓
비트 (bit) 는 Binary Digit 의 줄임말이다.
컴퓨터 과학에서 가장 작은 단위로, 0과 1 의 값으로 구성된다 .
컴퓨터는 다양한 방식으로 비트를 해석함으로써 무엇을 해야할 지를 결정하고, 숫자, 집합등을 표현하고 조작한다.
그렇다면 비트를 왜 사용할까 ??
전자 구현이 쉽고, 이중 안정 요소로 쉽게 저장된다.
또한, 노이즈가 많고 부정확한 전선에서 신뢰성 있게 전송된다.
> Byte 🤩
Byte = 8bits 이다.
2진수: 00000000(2)부터 11111111(2)까지
10진수: 0(10)부터 255(10)까지
16진수: 00(16)부터 FF(16)까지
C data type 을 살펴보자.
| Typical 32-bit | Typical 64-bit | |
|---|---|---|
| char | 1 | 1 |
| short | 2 | 2 |
| int | 4 | 4 |
| long | 4 | 8 |
| float | 4 | 4 |
| double | 8 | 8 |
| pointer | 4 | 8 |
32 bit 랑 64 bit 비교하면 long, pointer 에서만 차이가 발견된다.
유의사항 ⚠️
int a = 44;
int *b;
b는 a 가리키는 포인터이니까 크기가 4가 아닌 8이다. (64bit 기준)
b = *a;
부울 대수 🫡
True = 1
False=0
And
A=1 이고 B=1 일때 A&B = 1
| & | 0 | 1 |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 0 | 1 |
Or
A=1 이거나 B=1 일 때 A|B = 1
| ㅣ | 0 | 1 |
|---|---|---|
| 0 | 0 | 1 |
| 1 | 1 | 1 |
Not
| ~ | 0 | 1 |
|---|---|---|
| 1 | 0 |
Exclusive-Or(Xor)
A=1 이거나 B=1 , 하지만 둘 다 1은 아닌 경우 A^B = 1
| ^ | 0 | 1 |
|---|---|---|
| 0 | 0 | 1 |
| 1 | 1 | 0 |
논리 연산 😗
비트연산과 다른점 !
표시 : && , ||, !
0은 "false"로
0이 아닌 모든 것을 "true"로 간주
항상 0 또는 1 을 반환한다.
early termination 이 가능
"x 값을 왼쪽으로 y 번 밀어주세요"
민 후, 오른쪽 비는 곳에 0을 채운다
"x값을 오른쪽으로 y 번 밀어주세요"
ex)
X :10100010
<< 3 : 00010000
log >> 2 00101000
arith.>>2 00011000
(왼쪽으로 밀면 왼쪽(앞)이 민 만큼 사라지고 ->앞 삭제, 뒤 채움
오른쪽으로 밀면 오른쪽(뒤)가 민 만큼 사라진다.-> 뒤 삭제, 앞 채움)