Post

ASCII

컴퓨터가 문자를 이해하고 표현할 수 있게 하는 표준 코드 시스템

◼︎ ASCII

American Standard Code for Information Interchange

아스키 코드란 키보드에서 키를 누르면 컴퓨터가 어떤 문자를 표현할지 결정하는 데 사용되는 표준 코드이다.

어릴 때 키보드에 문자 ‘a’ 를 누르면, 컴퓨터가 ‘a’를 어떻게 인식 하는건지 궁금했던 적이 있었는데.. 이것이 아스키 코드 원리를 통해 작동한다.

컴퓨터는 숫자만 인식할 수 있다.

따라서, 키보드의 각 키는 고유한 숫자, 즉 아스키 코드를 할당받는다. ‘a’키를 누르면, 이에 해당하는 아스키코드 값이 컴퓨터로 전송되고, 컴퓨터는 이 값을 ‘A’문자로 해석하여 화면에 표시한다. 이렇게 키보드 입력이 문자로 변환되는 것이다.


컴퓨터는 아스키 코드를 어떻게 읽나

궁금해졌다. 그래서 아스키를 컴퓨터가 또 어떻게 이해하는 것인가?

아스키 코드는 실제로 이진수인 0과 1의 조합으로 이뤄져 있다. 각 아스키 코드는 7비트 이진수로 표현되며, 이는 128개의 고유한 값, 즉 0부터 127까지의 정수를 나타낸다.

예를 들어, ‘a’ 문자의 아스키 코드는 97인데, 이를 이진수로 표현하면 1100001이 된다.

키보드에서 ‘a’ 키를 누르면, 이에 해당하는 이진수 1100001이 컴퓨터로 전송된다. 컴퓨터는 이 이진수를 다시 아스키 코드 97로 해석하고, 이를 ‘a’ 문자로 출력한다.


► ASCII Table

image


► 자바에서 ASCII 코드 변환

프로그래밍에선 사용자로부터 입력받은 문자의 아스키 코드를 확인하여 특정 작업을 수행하도록 프로그램을 작성할 수 있다. 또한, 특정 아스키 코드 범위에 속하는 문자를 생성하거나 검사하는 등의 작업도 가능하다.

자바에서는 (char) 연산자를 사용하여 정수를 해당하는 아스키 문자로 변환할 수 있다.

아래는 97부터 122까지의 숫자를 아스키 코드로 가지는 문자를 출력한다. 각 숫자를 문자형으로 캐스팅하여 출력하면, 해당 아스키 코드에 해당하는 문자가 출력된다.

잘 알아두면 정말 유용하게 쓰일 것 같다.

1
2
3
4
5
6
7
8
public class Main {
    public static void main(String[] args) {

        for (int i = 97; i <= 122; i++) {
            System.out.println((char) i);
        }
    }
}
1
2
3
4
5
6
7
8
a
b
c
d
e
f
g
// 중략

◼︎ 이진수

평소에 우린 10진법을 사용한다.

**0~9까지의 숫자를 사용해 모든 수를 표현한다.

근데 컴퓨터가 사용하는 2진법 에선 0, 1 두 가지 숫자 만을 사용한다.


왜 이진수를 구할 때 몫을 계속 나누고, 그 결과를 역순으로 배치하나

이진수의 기본적인 원리 때문이다.

이진수는 숫자를 2의 거듭 제곱의 합으로 표현하는 방식이다. 예를 들어, 이진수 101은 2의 0제곱(=1)과 2의 2제곱(=4)을 더한 5를 나타낸다. 이때 1과 4는 각각 이진수 101의 오른쪽 끝과 왼쪽 끝에 해당하는 값이다.

이제 이와 관련해 10진수를 이진수로 변환하는 과정을 생각해보면 10진수를 2로 나눌 때마다, 그 결과는 이진수의 오른쪽(또는 낮은 자릿수)부터 왼쪽(또는 높은 자릿수) 순서로 결정된다.

이는 2로 나누는 과정이 “2의 거듭제곱의 합으로 숫자를 나타낸다”는 이진수의 원리를 따르기 때문이다.

그런데 이 과정을 그대로 적으면 이진수가 거꾸로(왼쪽과 오른쪽이 바뀌어) 나온다. 이를 바로잡기 위해, 나눗셈의 결과를 역순으로 배치해서 최종 이진수를 얻는 것이다.

This post is licensed under CC BY 4.0 by the author.