비트
비트라는 단어는 2진법을 사용한다는 뜻의 바이너리(binary)와 숫자를 뜻하는 디지트(digit)가 기묘하게 합쳐진 말이다. 컴퓨터는 이 비트를 사용해 적은 비용으로 편리하게 기호를 담을 수 있다. 비트는 2진법 1자리를 표현하는 정보량의 최소 단위이며 컴퓨터는 0,1 의 조합으로 수의 계산과 논리 계산을 한다.
바이트
4비트 = 1바이트, 2^8은 1바이트이며 총 256가지의 정보를 나타낼 수 있는 정보의 양이다. 비트가 정보 표현의 최소 단위이면, 바이트는 숫자나 글자, 로마자 등을 표현하기 위한 정보의 양을 나타내는 기본 단위이다.
영문자 A~Z 까지는 총 26개입니다. 영문자는 대소가 있으니 소문자도 26개 총 52개입니다. 여기에 숫자도 0~9까지 총 10개 그럼 총 62개입니다. 이 62개는 언어생활을 하는 사람이라면 당연히 알아야 하는 것입니다.
다음 은 특수문자를 포함하여 66개와 합하여 128개 됩니다. 이것은 2^7인데 국가와 회사별로 구분하여 표시하고자 128개가 생깁니다. 그래서 하면 256으로 2^8 이됩니다. 참고로 2^7로 표현된 코드로 대표적인 것이 아스키코드입니다. 결국 아스키코드는 7비트로 표현이 됩니다.그래서 8비트 즉 1바이트가 생겨날 당시에는 256으로 충분했다고 하니 그것이 기준가가 되어 지금까지 오고 있습니다.
논리연산
비트 사용법 중하나는 논리연산을 가능하게 한다는 것이다. 예를들어 날씨가 추운가? 예/아니요 등에 참과 거짓을 판별할 수 있는 조건 문맥에서 연산을 가능하게 한다.
불리언 대수
논리연산을 비트틀 통해 사용할 수 있는 연산 집합
NOT,AND,OR,XOR(배타적 둘이 다른 값일 때 참)
정수를 비트로 표현하는 방법
2022를 2진수로 표현하면
1*2의10승 + 1*2의9승 + 1*2의8승 + 1*2의7층 + 1*2의6승 + 1*2의5승 + 1*2의2승 + 1*2의1승이다.
비트로 표현하면 총 11비트가 된다.
1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 |
2진수에서 가장 오른쪽에 있는 비트를 가장 작은 유효 비트 (LSB)(Least Significant Bit)라고 부르고
가장 왼쪽에 있는 것을 가장 큰 유효비트 (MSB)(Most Significant Bit)라고 부른다.
=> 가장 오른쪽에 있는 것을 바꾸면 값이 가장 작게 변경되고
가장 왼쪽에 있는 것을 바꾸면 값이 가장 크게 변경되기 때문!!
오버 플로
덧셈 결과 사용하고자 하는 비트의 개수를 넘어갔을 때를 말한다. 즉 MSB에서 올림이 발생랬다는 뜻이다. 컴퓨터는 이를 인지하기 위해 조건코드 또는 상태코드 레지스터라 것 있다. 이것은 여러가지 정보를 나타내는 역할을 하는데 이 정보중에 오버 플로 비트가 있어 이를 체크해 오버플로 발생 여부를 체크한다.
음수표현
2의 보수로 쉽게 표현하는 방법
1) 어떤 수의 비트를 구한다.
2) 그 비트에 NOT을 적용해서 반대로 만든다.
3) LSB에 1을 더한다.
고정 소수점
정수를 표현하는 비트 수와 소수를 표현하는 비트 수를 미리 정해 놓고 해당 비트 만큼만 사용해서 숫자를 표현하는 방식
정수를 표현하는 bit를 늘리먄 큰 숫자를 표현할 수 있지만 정밀한 숫자를 표현하긴 힘들다. 반대로 소수를 표현하는 bit를 늘릴 경우 정밀한 숫자를 표현할 수 있지만 큰숫자를 표현하지 못한다.
부동소수점
부동 소수점을 표현하는 방식은 IEEE에서 표준으로 제안항 방식을 널리 사용한다.
지수 부분은 소수점 오른쪽에 수를 표현하고 가수부분은 소수점 왼쪽에 자릿수를 표현하다. 때문에 소수점이 고정되어 있지 않고 그때그때 움직이기 때문에 부동소수점이라고 한다.
컴퓨터의 텍스트 표현
유니코드
사람이 사용한는 모든 언어를 bit로 표현된 숫자로 매핑한 문자 집합. 해당 집합에 있는 모든 문자에 Index를 지정하고 컴퓨터는 해당 인덱스에 값으로 해당 언어를 표현한다.
인코딩
사람의 언어를 컴퓨터의 언어어 비트로 변경하는 것
UTF-8
- UTF-8의 코드 단위는 8bit이다.
- UTF-8은 인터넷에 대부분에서 기본적으로 사용되는 인코딩 방식이다.
- UTF-8은 유니코드를 위한 가변 길이 문자 인코딩 방식 중 하나이다.
- UTF-8 인코딩은
유니코드 한 문자를 나타내기 위해 1byte~4byte까지를 사용한다.
사실은 6byte까지 사용하지만
일반적인 문자는 3byte 내로 처리되며
4byte 영역에는 이모티콘 같은 문자가 존재한다.
사실상 4byte 이상의 문자를 사용하는 경우가 없다 보니
1 ~ 4byte를 사용한다고 말한다. - 영문 byte 수 : 1byte
한글 byte 수 : 3byte - 실제 예시는 나무 위키에 UTF-8 설명이 잘되어 있어서 링크로 대체한다.
Q. 한글 byte는 왜 3byte를 사용할까?
- 위에서 유니코드는
사람이 사용하는 모든 언어를 bit로 표현된 숫자로 매핑 해놓는다. 라고 말했다.
여기서 한글을 3byte로 대응해놓았기 때문에 3byte를 사용하는 것이다.
UTF-16
- UTF-16의 코드 단위는 16bit이다.
- 주로 사용되는 기본 다국어 평면(BMP, Basic multilingual plane)에 속하는 문자들은
그대로 16bit값으로 인코딩되고
그 이상의 문자는 특별히 정해진 방식으로 32bit로 인코딩된다. - UTF-16 인코딩은 유니코드 한 문자를 나타내기 위해 2byte~4byte까지를 사용한다.
- 영문 byte 수 : 2byte
한글 byte 수 : 2byte
UTF-8 vs UTF-16
- UTF-8과 UTF-16 인코딩의 차이는 다음과 같다.
문자 하나를 표현하기 위한 필요 bit의 크기
- UTF-8 : 8bit 필요
UTF-16 : 16bit 필요
문자 하나를 표현하기 위한 byte 범위의 차이
- UTF-8 : 1byte~4byte 필요
UTF-16 : 2byte~4byte 필요
Why Base64??
Base64 Encoding을 하게되면 전송해야 될 데이터의 양도 약 33% 정도 늘어난다. 6bit당 2bit의 Overhead가 발생하기 때문이다. http://www.base64encode.org/에서 직접 테스트해보면 어렵지 않게 확인 할 수 있다. Encoding전 대비 33%나 데이터의 크기가 증가하고, Encoding과 Decoding에 추가 CPU 연산까지 필요한데 우리는 왜 Base64 Encoding을 하는가?
문자를 전송하기 위해 설계된 Media(Email, HTML)를 이용해 플랫폼 독립적으로 Binary Data(이미지나 오디오)를 전송 할 필요가 있을 때, ASCII로 Encoding하여 전송하게 되면 여러가지 문제가 발생할 수 있다. 대표적인 문제는
- ASCII는 7 bits Encoding인데 나머지 1bit를 처리하는 방식이 시스템 별로 상이하다.
- 일부 제어문자 (e.g. Line ending)의 경우 시스템 별로 다른 코드값을 갖는다.
위와 같은 문제로 ASCII는 시스템간 데이터를 전달하기에 안전하지가 않다. Base64는 ASCII 중 제어문자와 일부 특수문자를 제외한 64개의 안전한 출력 문자만 사용한다.
(* 안전한 출력 문자는 문자 코드에 영향을 받지 않는 공통 ASCII를 의미한다).
즉, “Base64는 HTML 또는 Email과 같이 문자를 위한 Media에 Binary Data를 포함해야 될 필요가 있을 때, 포함된 Binary Data가 시스템 독립적으로 동일하게 전송 또는 저장되는걸 보장하기 위해 사용한다” 라고 정리 할 수 있을 것 같다.
URL은 네트워크 상에서 자원이 어디 있는지를 알려 주기 위한 규약이다. 즉, 컴퓨터 네트워크와 검색 메커니즘에서의 위치를 지정하는 웹 리소스에 대한 참조이다. 쉽게 말해서, 웹 페이지를 찾기위한 주소를 말한다. 퍼센트 인코딩 사용.
참조
출처: <https://m.blog.naver.com/kji9653/221900031533>
출처: <https://wastetime.tistory.com/54>
비트(bit)와 바이트(Byte)란?왜 8비트는 1바이트인가? 킬로바이트(kilobyte) 메가바이트(megabyte) 기가
안녕하세요. 비티샘입니다. 오늘은 우리의 이진법 체계에서 자주 사용하는 비트에 대해 알아보겠습니다. C...
blog.naver.com
출처: <https://goodgid.github.io/Unicode-And-UTF-Encoding/>
유니코드와 UTF-8 / UTF-16
Index
goodgid.github.io
출처: <https://effectivesquid.tistory.com/entry/Base64-%EC%9D%B8%EC%BD%94%EB%94%A9%EC%9D%B4%EB%9E%80>
Base64 인코딩이란?
인코딩이란? Base64 인코딩에 대해 알아보기전에 먼저 인코딩이란게 무엇인지 간략하게 알아보자. 인코딩(encoding)은 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위
effectivesquid.tistory.com
컴퓨터가 색을 표현하는 방법
[컴퓨터 구조와 프로그래밍] 색을 표현하는 방법
컴퓨터 그래픽스는 전자 모눈종이에 해당하는것에 색을 표현하는 점을 찍어서 그림을 만드는 과정이다. 이떄 모눈의 각 격자에 찍는 점을 그림 원소라고 부르고, 줄여서 픽셀이라 부른다.컴퓨
velog.io