Skip to content

C : 컴퓨터가 데이터를 표현하는 방법 #33

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
ghost opened this issue Jan 3, 2018 · 3 comments
Closed

C : 컴퓨터가 데이터를 표현하는 방법 #33

ghost opened this issue Jan 3, 2018 · 3 comments
Assignees

Comments

@ghost
Copy link

ghost commented Jan 3, 2018

c언어 공부하면 컴퓨터가 데이터를 표현하는 방법 파트가 나오는데 몰라도 딱히 어려움은 없는듯 한데 궁금하네요 막 비트 바이트
있잖아요 변수에서도 char 이나 int에는 몇 바이트 이러는데
무슨말이죠 그리고 그게 왜중요한건가요??? 그리고 연산자에서 XOR 이러한 기호들
다뭐죠???

@happydeveloper
Copy link
Collaborator

happydeveloper commented Jan 4, 2018

비트, 바이트가 무엇이고 변수에서 자료형 char, int의 바이트가 무엇을 의미한가요?

비트

비트는 컴퓨터에서 정보를 표현할 수 있는 가장 작은 정보 단위입니다. 비트는 0과 1의 상태를 갖습니다. 이 상태의 특성을 이용해서 2가지 정보를 담을 수 있습니다.
비트가 중요한 이유는 컴퓨터의 모든 데이터는 궁극적으로 이 비트들의 모음 이라는 사실입니다. 프로그램, 파일, 운영제제 와 같은 컴퓨터 안에 있는 모든 것들은 1과 0으로 나열이고 사람이 정해 놓은 체계와 구조와 같은 약속을 통해 특정한 의미를 표현하는 것 입니다.
( 비트는 물리적으로 비유한다면 컴퓨터안에서 더 이상 쪼갤 수 없는 원자인 같아요~ )

바이트

비트들을 8개 그룹핑한게 바이트입니다. 바이트는 256개의 정보를 담을 수 있습니다. 컴퓨터 안에서는 바이트가 기본 단위로 많이 사용됩니다. 대부분의 컴퓨터 하드웨어에서 메모리 주소 단위로도 사용됩니다.

바이트정보

바이트_한글위키피디아
비트정보

변수에서 자료형 char, int의 바이트가 무엇을 의미하는가?

변수를 선언한다는 것은 컴퓨터 하드웨어의 메모리를 할당한다는 의미입니다. 이때 변수의 자료형에 따라 그 크기를 지정합니다. 정보를 많이 담을 필요가 없는데 메모리를 많이 사용하면 그 만큼 비효율적인 것이니까요. 그래서 문자는 char 이라는 자료형을 사용하고 이 자료형은 1byte의 메모리의 공간을 할당합니다. 1byte는 비트가 8로 구성되어 있습니다. 즉 2의 8승의 자료형을 표현할 수 있고 256개의 정보를 담을 수 있고 영문이나 특수문자 같은 의미를 담는데는 적당한 메모리 크기 입니다.
int 자료형은 4바이트의 메모리 공간을 보통 할당합니다. (C언어 기준) 4바이트는 비트가 32개로 구성되어 있고 2의 32승의 의미를 담을 수 있습니다. 그래서 일상적으로 사용하는 정수를 담는데 적당한 크기이기 때문에 사용하는 것입니다.

XOR 연산은 무엇인가요.

XOR 연산은 두개의 비트가 서로 다를 경우 참이고 그 외에는 거짓인 연산입니다.
이 연산은 암호화 분야에서도 많이 사용이 돼요. 어떠한 비트를 xor 연산을 한번 했을 경우는 원래의 자료상태를 알아보기 힘들게 되고 다시 xor 연산을 하면 복원되는 특징이 있습니다.

A B OutPut
0 0 0
0 1 1
1 0 1
1 1 0
// xor 암호화 ^ 복음화
void enc(char *msg) {
    int key=31;
    while (*msg) {
        *msg = *msg ^ key; //xor 연산
        msg++;
    }
}

도움이 되셨으면 합니다~~ ^^ 저보다 더 좋은 설명들이 인터넷과 책에는 많습니다.

@opentutorialsorg
Copy link
Member

opentutorialsorg commented Jan 4, 2018 via email

@azaraks
Copy link

azaraks commented Jan 4, 2018

C는 메모리 상의 데이터 크기가 얼마나 되는지 모르면 착잡해집니다. C++이 아닌 C로 몇개 만들어보시면 알게 되세요.
XOR 같은 연산자는 안써도 되는데 속도를 올리기 위해 사용합니다. 안 써도 될 때는 안 써도 됩니다만 더 빠른거 알면 좋잖아요?

@egoing egoing changed the title 컴퓨터가 데이터를 표현하는 방법 C : 컴퓨터가 데이터를 표현하는 방법 Jan 4, 2018
@blackdew blackdew added this to the 코딩야학 3기 milestone Jan 4, 2018
@egoing egoing modified the milestone: 코딩야학 3기 Jan 8, 2018
@blackdew blackdew closed this as completed Aug 9, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants