컴퓨터 언어

이건준·2022년 2월 21일
0
post-thumbnail

1. 언어란 ??

-> 모든 언어(apple)는 기호(a, p, p, l , e)의 집합으로 인코딩

->의사소통하는 모든 이들이 같은 문맥을 공유(동일한 언어라 해도 상황에 따라 다르게 해석되는 경우가 있음)

*** 컴퓨터 언어도 위같은 문제가 있음 

-> 문자 언어의 틀을 이루는 세가지 요소 
	1. 기호가 들어갈 상자 
	2. 상자에 들어갈 기호 
	3. 상자의 순서 
	
	

2. 비트란 ??

-> 자연어(인간의 언어)에서는 상자를 문자라 부르고 컴퓨터에서는 비트라 부른다

-> 비트는 2진법을 사용한다는 바이너리(binary), 숫자를 뜻하는 디지트(digit) 합쳐짐

-> 비트는 2진법을 사용함

-> 0혹은 1 둘 중 하나가 비트에 담김

3. 논리 연산

-> 비트의 사용법 중 하나

-> 자연어에서의 예 / 아니오와 같이 true/ false로 다른 비트들이 표현하는 내용을 가지고 새로운 비트를 만들어내는 것을 논리연산이라 한다

4. 불리언 대수

-> 앞서 비트에 대해 사용할 수 있는 연산 규칙의 집합

*** 불리언 연산자 
	1. NOT: 논리적 반대를 의미, 거짓 비트에 NOT을 하면 참, 참 비트에 NOT을 하면 거짓 
	2. AND: 모든 비트가 참이면 AND 연산의 결과가 참, 나머진 거짓
	3. OR: 하나의 비트라도 참이라면 모두 참, 나머진 거짓 
	4. XOR: 두개의 비트가 전부 다른 값인 경우에만 참, 나머진 거짓 
	
	

5. 드모르간의 법칙

-> 불리언 대수에 적용할 수 있는 법칙

-> 이 법칙은 a AND B 라는 연산이 NOT(NOT a OR NOT b)와 같다고 말한다

-> 즉, NOT을 충분히 사용한다면 AND연산을 OR연산으로 대신할 수 있다는 애기

-> 컴퓨터에선 항상 정의롭게 결과가 나오지않기에 이런 결과는 되게 유용
예를 들어서 춥다, 비가 온다가 아니라 NOT춥다, NOT비가 온다가 될 수 있는것이다

6. 정수를 비트로 표현

-> 일반적으로 10진수(decimal number)는 10가지 기호(0~9)인 숫자를 상자에 담을 수 있다
예를 들어 왼쪽부터 상자에 100의 자리, 10의 자리, 1의 자리같은 이름이 붙여지고 값이 넣어짐

	*** 즉, 상자에 든 내용물(0~9)과 상자의 값을 곱한것을 전부 더한 값
	

-> 비트도 마찬가지로 각 상자에 넣을 수 있는 기호는 0과 1
예를 들어 5028을 표현할때는 10진수로는 네자릿구, 2진수로는 13비트수(0승부터 12승)로 표현가능하다

7. MSB, LSB

-> 2진수에서 비트의 개수가 표현할 수 있는 값의 범위를 결정하게된다
예를 들어서 2비트만 사용하면 0~3사이에 속하는 네가지 수를 표현가능

-> 이때 2진수에서 가장 오른쪽의 비트를 "가장 작은 유효 비트"(LSB), 가장 왼쪽의 비트를 "가장 큰 유효 비트"(MSB)라 한다

8. 2진수 덧셈

-> 10진수 덧셈에서 오른쪽에서 왼쪽으로 각 자리의 숫자를 더하는데 결과가 9보다 크면 1을 올리는것처럼 2진수에서도 LSB(오른쪽)에서 MSB(왼쪽)로 더하며 결과값이 1보다 크면 1을 다음 자리로 올린다

-> 두 비트를 서로 더한 결과는 두 비트를 XOR한 값과 같고 올림은 두 비트를 AND한 값과 같음

-> 만약에 덧셈결과가 우리가 사용할 비트의 개수로 표현할 수 있는 범위를 벗어나면 어떻게 될까 ?? 이를 오버플로가 발생한다

	*** 오버플로란 ?? MSB에서 올림이 발생했다는 뜻
		예를 들어서 4비트 덧셈에서 1001(9)와 1000(8)이 있다면 결과는 10001(17)이다, 하지만 MSB왼쪽에 사용할 수 있는 비트가 없기때문에 0001(1)이 되는것이다

0개의 댓글

관련 채용 정보