2013-02-21 1 views
5

저는 최근에 우리가 기대하는 것을 생산하기 위해 컴퓨터 하드웨어가 어떤 작업을해야하는지 더 생각해 왔습니다.컴퓨터가 ASCII/텍스트 및 이미지/색상을 어떻게 다르게 처리합니까?

텍스트와 색상을 비교해 보면 1과 0의 조합이 바이트 당 256 가지 조합을 사용하는 것으로 보입니다. ASCII는 (01100001)과 같은 문자를 문자 'A'로 나타낼 수 있습니다. 그러나 임의의 색상을 나타내는 색상 R (01100001), G (01100001), B (01100001)가있을 수 있습니다. 낮은 레벨을 고려할 때, 컴퓨터는 1과 0의 모음을 읽는 중입니다. 컴퓨터가 R (01100001), G (01100001), B (01100001) 및 문자 A가 아닌 색상을 3 번 내 화면에?

+2

아래의 내 답변 외에도 컴퓨터가 가장 낮은 단계부터 어떻게 작동하는지 알고 싶다면이 책을 읽어 보시기 바랍니다. 컴퓨터 조직 및 디자인 (저자 Patterson, Hennessy). 읽으면 (또는 그와 동등한 자료를 읽는다면) CPU가 어떻게 작동하는지 보게 될 것이며, 기계와 그 많은 레벨을 더 잘 이해하게 될 것입니다. – Numbers

+0

그래, 나는 동의한다. 나는 comp architecture/organization에 관한 책이 나의 최근의 호기심을 많이 만족시킬 것이라고 생각한다. 좋은 콜, 고마워. – ThisBetterWork

+0

+1에 @Number의 제안. 나는 같은 책을 제안하려고했다. – Iguananaut

답변

5

이 질문이 스택 오버플로에 적절하다고 확신하지는 않지만 어쨌든 기본적인 대답을 알려 드리겠습니다. 실제로 대답하기를 원하는 깊이에 따라 컴퓨터 아키텍처 전체를 책으로 쓸 수 있기 때문에 실제로는 매우 복잡한 질문입니다.

그래서 간단하게하기 위해 나는 단지 당신에게 이것을 줄 것이다 : 그것은 모두 문맥의 문제이다. 먼저 텍스트를 다루기 만하면됩니다.

텍스트 편집기를 열면 암시 적으로 그 안에 표시 할 데이터가 텍스트입니다. 표시 할 텍스트는 메모리의 일부 바이트입니다 (디스크의 일부 바이트에서 복사 될 수 있음). 메모리의 관점에서 볼 때 이러한 바이트가 텍스트라는 마법의 내부 컨텍스트는 없습니다. 대신 텍스트 편집기의 소스에는 해당 바이트를 가리키고 "이 바이트는 300 자의 텍스트를 나타냅니다"라고하는 몇 가지 명령이 들어 있습니다. 그런 다음 ASCII 코드와 같은 인코딩 (텍스트를 인코딩하는 다른 많은 방법이 있습니다)에 따라 해당 바이트를 매핑하는 하드웨어에 대한 라이브러리 코드와 관련된 모든 단계가 문자에 포함되어 글꼴에서 해당 문자를 찾고 해당 글꼴을 작성합니다. 화면 등.

요점은 이 없으므로 해당 바이트를 텍스트로 해석 할 수 없습니다. 이것이 텍스트 편집기가하는 것이기 때문입니다. 이미지 프로그램에서 가상으로 열어서 같은 300 바이트를 RGB 값의 10x10 배열 (또는 이미지)로 해석하도록 말할 수 있습니다.

색상은 동일한 로직이 적용됩니다. 그것들은 단지 메모리에있는 바이트 일뿐입니다. 그러나 화면에 무엇인가를 그리는 코드가 어떤 색으로 어떤 픽셀을 쓰고 싶은지 결정할 때, 메모리 매핑을 통해 비디오 카드로 그 바이트를 파이프하여 비디오 카드로 보내면 비디오 카드는 모니터로 전송되는 명령으로 변환됩니다 (여전히 현실은 훨씬 더 복잡하지만 픽셀과 색상을 나타내는 일부 이진 형식에서는 모니터 자체에 해당 색상을 실제 픽셀에 매핑하는 세부 사항을 처리하는 펌웨어가 포함되어 있습니다. 색상 자체를 나타내는 숫자는 특정 시점에서 각 R/G/B 채널의 특정 전류로 변환되어 강도를 높이거나 낮 춥니 다.

그게 전부지만 지금은 시간이야.

업데이트 : 내 요점을 설명하기 위해 플랫 랜드 텍스트를 here에서 가져 왔습니다. 이 중 216624 바이트의 ASCII 텍스트가 있습니다 (웹 브라우저에서 컨텍스트에 따라 해석되므로 .txt 확장자가 도움이되지만 웹 서버는 MIME 유형 헤더를 제공하여 브라우저에 일반 텍스트로 해석되어야 함을 알립니다.) 브라우저 또한 바이트를 분석하여 패턴이 일반 텍스트처럼 보이는지 (그리고 ASCII 문자를 나타내지 않는 압도적 인 바이트 수가 없음)를 결정할 수 있습니다.흥미로운 보이는 정말

하지 : 나는 269 X 269 RGB 이미지로 꾸몄다 다음 길이는 269 * 269 * 3 217,083되도록 텍스트의 마지막에 몇 가지 공간을 추가하고 . 그러나 요점은 방금 정확하게 동일한 바이트를 가져 와서 소프트웨어에 "알았어, 이것들은 지금 RGB 값이다"라는 것입니다. 그렇다고 일반 텍스트 바이트를 이미지로 보는 것이 유용 할 수 없다는 것을 말하는 것이 아닙니다. 예를 들어, 암호화 알고리즘을 시각화하는 유용한 방법이 될 수 있습니다. This은 매우 안전하지 않은 알고리즘으로 암호화 된 이미지를 보여줍니다. 원래의 암호화되지 않은 파일에서 바이트 패턴을 잘 이해할 수 있습니다. 텍스트가 아니라 이미지가 아닌 경우 영어와 같은 특정 언어의 텍스트도 통계 패턴을 알고 있기 때문에 별다른 차이가 없습니다. 좋은 암호화 알고리즘은 암호화 된 이미지가 랜덤 노이즈처럼 보이게 만듭니다.

1

0과 1은 단지 0과 1입니다. 바이트는 단지 8 비트의 모음입니다. 정보에 할당하는 의미는 현재 필요한 정보, 정보를 해석 할 때 사용하는 "언어"에 따라 다릅니다. 65는 ASCII의 경우 문자 A이거나 숫자 int a = 65 + 3 인 경우 65입니다. 낮은 수준에서는 읽는 파일의 유형, 헤더, 요청 프로세스의 데이터 등에 따라 데이터가 올바르게 처리되도록하기 위해 수천 가지의 기계 명령어가 실행됩니다. 다른 정보를 다루기 위해 사용하는 다양한 고급 기능은 매우 다른 기계 코드로 확장됩니다.

관련 문제