본문 바로가기
Programming

컴퓨터 내부 언어 체계

by 보라코끼리 2021. 12. 23.
728x90

- 본 글은 [한 권으로 읽는 컴퓨터 구조와 프로그래밍] 책을 읽고 정리한 내용입니다.

  • 프로그래머는 컴퓨터에게 명령을 내려야 하는데 컴퓨터가 사람의 말을 알아듣지 못하기 때문에 사람이 컴퓨터의 말을 배워야 한다.
  • 컴퓨터 언어는 자연어(사람이 쓰는 언어)가 생긴 후에 만들어진 인공적인 발명품이기 때문에 자연어를 사용하여 컴퓨터 언어를 설명할 수 있다.
  • 컴퓨터 언어는 문자 언어만을 사용하는데 쓰이는 기호, 기호 나열 방법, 사용법 등의 요소를 자연어와 공유한다.
  • 자연어와 컴퓨터 언어의 비문자 언어는 공유하지 않는다.

 

언어란?

  • 언어는 편의성을 제공하는 지름길이다.
  • 언어를 사용하면 복잡한 개념을 아주 멀리까지 전달할 수 있으며, 직접 보여주지 않고도 의사소통이 가능하다. 
  • 전달 과정에서 중재자가 존재할 수도 있다.
  • 구어, 문어, 몸짓 언어 등을 포함하는 모든 언어들의 뜻은 기호의 집합으로 인코딩되지만 이것만으로 의미를 전달하기에는 충분하지 않다.
  • 언어가 제대로 작동하기 위해서는 의사소통에 참가하는 사람들이 모두 같은 문맥을 공유하여 하나의 기호에 같은 뜻을 부여해야 한다.
    • ex) 토토 : [오즈의 마법사]의 개 or 일본 기업
    • ex) 캐미솔 : 미국 - 여성용 민소매 속옷 or 프랑스 - 구속복

 

문자 언어

  • 문자 언어는 기호를 나열한 것으로 이 기호를 정해진 순서대로 나열하여 단어를 만든다.
    • ex) 맛집 : ㅁ, ㅏ, ㅅ, ㅈ, ㅣ, ㅂ (여섯 가지 기호)
    • ex) yum : y, u, m (3가지 기호)
  • 기호와 조합에는 많은 가능성이 있는데 현대 한글은 24자의 기본 자모음, 영어는 기본 26자의 기호를 사용하며 언어마다 기호와 기호의 유형이 서로 달라질 수 있다.
    • ex) 한자 : 각 기호가 모두 다른 뜻을 나타내는 표의문자
  • 언어의 순서나 기호의 순서도 다르다
    • ex) 히브리어 : 오른쪽에서 왼쪽, 중국어 : 세로로 읽음 (언어의 순서)
    • ex ) dog 와 god 은 같지 않다. (기호의 순서)
  • 문자 언어의 틀
    • 기호가 들어갈 상자
    • 상자에 들어갈 기호
    • 상자의 순서
  • 일부 언어에는 서로 인접한 상자에는 특정한 기호가 들어갈 수 없는 등의 복잡한 규칙이 존재한다.

 

비트

  • 자연어의 문자 (character) = 컴퓨터의 비트(bit) -> 상자
    • 비트 : 바이너리 (2진법) + 디지트 (숫자)
    • 비트를 사용하면 적은 비용으로 편리하게 기호를 담을 수 있다.
  • 비트는 2진법을 사용하기 때문에 비트 상자에는 두 가지의 기호만 담을 수 있다.
  • 기호의 개념은 추상적이고 무엇이든 상관없지만 말하는 사람과 듣는 사람이 같은 문맥으로 이해하지 않으면 제대로 작동할 수 없다
    • ex) 말하는 사람 : U(점-점-선) <-> 듣는 사람 : 쌀-쌀-보리

 

논리 연산(logic operation)

  • 비트 사용법 예
    • 날씨가 추운가? 내 모자를 좋아하니? 같은 질문에 예/아니오 로 답을 하는 것
      • 예 -> 참(true)
      • 아니오 -> 거짓(false)
    • 파티 장소는 어디? 라는 질문은 예/아니오 로 답할 수 없는 질문이기 때문에 한 비트로 표현할 수 없다.
  • 논리연산은 다른 비트가 표현하는 내용으로부터 새로운 비트를 만들어 내는 동작이다.
    • ex) 밖에 비가 내리고 있거나 추우면 코트를 입어라
      • 춥다 or 비가 내린다가 '참'이면 코트 입는다 가 '참'이다.
    • 눈이 오고, 학교에 가는 날이 아니라면 스키를 타러 가라
      • 눈이 온다 or 학교에 가는 날이 아니다가 '참'이면 스키를 탄다 가 '참'이다.

 

불리언 대수

  • 영국 수학자 조지 불(George Boole)이 만들어낸 비트에 대해 사용할 수 있는 연산 규칙의 집합
    • 대수 : 수에 대한 연산 규칙의 집합
  • 결합 법칙, 교환 법칙, 분배 법칙을 적용할 수 있다.

 

  • NOT
    • '논리적 반대'를 의미하는 연산이다.
      • 거짓 을 뜻하는 비트에 NOT 을 하면
      • 참 을 뜻하는 비트에 NOT 을 하면 거짓
A NOT A
TRUE (1) FALSE (0)
FALSE (0) TRUE (1)

 

  •  AND
    • 둘 이상의 비트에 작용하며 모든 비트가 참일 때 결과가 참
      • 2비트 연산 : 첫 번째 비트가 참이고 두 번째 비트가 참이면 결과는
      • 더 많은 비트 연산 : 모든 비트가 참이면 참
A B A AND B
TRUE (1) TRUE (1) TRUE (1)
TRUE (1) FALSE (0) FALSE (0)
FALSE (0) TRUE (1) FALSE (0)
FALSE (0) FALSE (0) FALSE (0)

 

  •  or
    • 둘 이상의 비트에 작용하며 한 비트라도 참이면 참
      • 2비트 연산 : 첫 번째 비트가 참 이거나 두 번째 비트가 참이면 결과는 
      • 더 많은 비트 연산 : 하나라도 참이면 참
A B A OR B
TRUE (1) TRUE (1) TRUE (1)
TRUE (1) FALSE (0) TRUE (1)
FALSE (0) TRUE (1) TRUE (1)
FALSE (0) FALSE (0) FALSE (0)

 

  • xor
    • 배타적(exclusive) or
    • 첫 번째 비트와 두 번째 비트가 다른 값인 경우 
      • 두 값 중 어느 하나가 참이면 
      • 두 값이 모두 참이면 거짓
A B A XOR B
TRUE (1) TRUE (1) FALSE (0)
TRUE (1) FALSE (0) TRUE (1)
FALSE (0) TRUE (1) TRUE (1)
FALSE (0) FALSE (0) FALSE (0)

 

  • 기본 불리언 연산을 다양하게 조합하여 같은 결과를 얻을 수도 있다.
    • A XOR B 연산은 (A OR B) AND (A AND B) 와 같다

 

드모르간의 법칙

  • 영국 수학자인 오거스터스 드모르간(Augustus De Morgan) 이 알아낸 불리언 대수에 적용할 수 있는 법칙
  • A AND B = NOT(NOT A OR NOT B)
A B A AND B NOT A  NOT B NOT A OR NOT B NOT(NOT A OR NOT B)
TRUE (1) TRUE (1) TRUE (1) FALSE (0) FALSE (0) FALSE (0) TRUE (1)
TRUE (1) FALSE (0) FALSE (0) FALSE (0) TRUE (1) TRUE (1) FALSE (0)
FALSE (0) TRUE (1) FALSE (0) TRUE (1) FALSE (0) TRUE (1) FALSE (0)
FALSE (0) FALSE (0) FALSE (0) TRUE (1) TRUE (1) TRUE (1) FALSE (0)
  • NOT 을 사용하면 AND 연산을 OR 연산으로 대신할 수 있다는 뜻이다.
    • 입력이 '춥다' '비가온다' 형식이 아니라 'NOT 춥다' 'NOT 비가 온다'의 형식에서 유용할 수 있다.
    • 자연어의 이중 부정이 비슷한 일을 한다.
      • ex) 나는 사랑에 빠지지 않을 수 없었다.

 

  • 긍정적인 논리 ( OR 연산 이용 )
춥다 비가 온다 코트를 입는다.
TRUE (1) TRUE (1) TRUE (1)
TRUE (1) FALSE (0) TRUE (1)
FALSE (0) TRUE (1) TRUE (1)
FALSE (0) FALSE (0) FALSE (0)
  • 부정적 논리 ( AND 연산 이용 )
NOT 춥다 NOT 비가 온다 NOT 코트를 입는다
TRUE (1) TRUE (1) TRUE (1)
TRUE (1) FALSE (0) FALSE (0)
FALSE (0) TRUE (1) FALSE (0)
FALSE (0) FALSE (0) FALSE (0)
728x90

'Programming' 카테고리의 다른 글

정수를 비트로 표현하는 방법  (0) 2021.12.24
flag 값 알아보기  (0) 2021.08.18
depth 메뉴 구성 알아보기  (0) 2021.08.17
어포던스(Affordance) 알아보기  (0) 2021.08.15
EP(Enterprise Portal) 알아보기  (0) 2021.08.15