비트, 바이트 -> 불 대수, 논리 연산

·2024년 4월 12일

컴퓨터 구조

목록 보기
1/11
post-thumbnail

> 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-bitTypical 64-bit
char11
short22
int44
long48
float44
double88
pointer48

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

&01
000
101

Or
A=1 이거나 B=1 일 때 A|B = 1

01
001
111

Not

~01
10

Exclusive-Or(Xor)
A=1 이거나 B=1 , 하지만 둘 다 1은 아닌 경우 A^B = 1

^01
001
110

논리 연산 😗

비트연산과 다른점 !

  • 표시 : && , ||, !

  • 0은 "false"로
    0이 아닌 모든 것을 "true"로 간주

  • 항상 0 또는 1 을 반환한다.

  • early termination 이 가능

쉬프트 연산

  • left shift : x << y

"x 값을 왼쪽으로 y 번 밀어주세요"

민 후, 오른쪽 비는 곳에 0을 채운다

  • right shift : x >> y

"x값을 오른쪽으로 y 번 밀어주세요"

  • Logical shift : 왼쪽에 0 으로 채운다.
  • Arithmetic shift : most significant bit(최상위 비트로, 가장 앞에 있는 비트를 말한다) 를 왼쪽에 채운다.
ex)

X :10100010
<< 3 : 00010000
log >> 2 00101000
arith.>>2 00011000
(왼쪽으로 밀면 왼쪽(앞)이 민 만큼 사라지고 ->앞 삭제, 뒤 채움 
오른쪽으로 밀면 오른쪽(뒤)가 민 만큼 사라진다.-> 뒤 삭제, 앞 채움)
  • 정의되지 않는 경우:
    시프트 양이 0보다 작거나 워드 크기 이상인 경우
profile
어리둥절 빙글빙글 돌아가는 코딩세상~

0개의 댓글