본문 바로가기

CS/컴퓨터 과학 얕은 지식6

Base64란 무엇이고, 왜 쓰는 걸까 (뜻 과 사용 목적, 인코딩 예) Base64의 뜻 Base64의 사용 목적 Base64의 뜻 Base64란 이진 데이터를 ASCII 코드 일부의 문자들로 인코딩하는 방식, 규격을 일컫는 말입니다. 64 = 2^6 Base64의 사용 목적 이진데이터의 기본적인 8비트를 6비트로 바꾸니 의야할 수 있습니다. 기존 표현범위에서 2비트를 뺀 셈이기도 하니. 그래도 우리는 Base64를 사용함으로써 이진데이터들을 오직 Base64에서 정한 텍스트로써 다룰 수 있습니다. 이는 웹상으로 더욱 안전하고 범용적으로 사용할 수 있게 합니다. 여기서 안전하다는 의미는 기존 ASCII는 문자를 표현하는데 7비트만을 사용합니다. 고로 바이트(8비트) 단위의 이진데이터를 변환하는데 있어 부적합합니다. 어느 기기에서는 8비트에서 7비트의 ASCII 표 현 후 남.. 2022. 5. 26.
오버플로우와 언더플로우 용어 정의 예시 용어 정의 오버플로우(Overflow)는 어떠한 자료형이나 데이터 구조가 표현할 수 있는 범위의 최대치를 넘어서는 곳에 접근하는 것을 일컫는 용어입니다. 유사하게, 언더플로우(Underflow)는 표현범위의 최소치보다 낮은 곳에 접근하려는 것을 일컫는 용어입니다. 위의 정의에서 볼 수 있듯 표현범위의 한계가 있는 어느 자료형이나, 데이터 구조에서도 일어날 수 있으며 이를 주의하여 프로그램을 만들어야합니다. (연산, 버퍼나 스택같은 메모리 구조에서도 일어납니다.) 예시 자료형을 예로 부호가 있는 8비트의 경우 표현할 수 있는 범위가 -128 ~ +127입니다 먼저 오버플로우의 예로 부호가 있는 8비트 자료형의 최대 표현값 127 (01111111(2)) 이에 1을 더하게 되면 -128 10.. 2022. 5. 24.
floating point는 왜 Bias(이하 Bias 표현법)를 사용할까? (목적, Bias 연산 등 예시) Bias 표현법의 뜻과 사용 이유 2의 보수법과 십진수의 비교 예 Bias 표현법 실제 사용 예 Bias 표현법의 뜻과 사용 이유 그 이유는 +, - 같은 부호가 존재하는 (signed) 2의 보수법은 그 구조상, 비교를 하기에 어려움이 존재한다. 그래서 지수를 표현하는 부분에서 +, - 같은 부호가 없이 통일된 수로 (unsigned) 범위를 표현한다. 그리고 이러한 2의 보수법에서 부호가 없이 통일된 (unsigned) 수들로 만들기 위해 사용되는 것이 Bias 상수를 응용한 연산이고 이렇게 만들어진 체계를 Bias 표현이라 한다. 2의 보수법과 십진수의 비교 예 그렇다면 2의 보수법은 왜 비교가 힘들까란 의문이 생길 수 있어 간단히 예를 보이겠다. 2의 보수법은 음의 부호를 표현하기 위해 데이터의 .. 2022. 4. 25.
메모리 패딩이 일어나는 이유 (뜻, 목적, Memory Alignment Rule, cache hit, false sharing) 메모리 패딩의 뜻 메모리 패딩의 사용 목적 Memory Alignment Rule 어떻게 작동하길래 프로세서에서 이로운가 cache hit ratio는 어떻게 높이는가 패딩을 일부러 없애는 경우 메모리 패딩이란 다음과 같이 구조체나 클래스를 구성할 경우 우리의 예상과 달리 더 큰 값이 나옴을 확일 할 수 있는데 이는 메모리 패딩이 일어나서이다. 메모리 패딩의 뜻 즉 메모리 패딩은 메모리에 저장되는 데이터와 그 다음 데이터 사이에 생기는 공백을 이르는 말이다. 메모리 패딩의 사용 목적 이러한 메모리 패딩이 사용되는 목적으로는 프로세서가 데이터를 다루는데 기본이 되는 단위는 Word인데 이 Word에 맞게끔 데이터의 메모리 크기를 추가하여 cache hit ratio를 높이고 CPU의 연산 횟수를 줄이는 등.. 2022. 4. 20.
Heap 이란? (뜻, 목적, 사용 시 문제 (Memory leak, Memory Fragmentaion), 해결 방법) 컴퓨터에 대하여 공부를 하는 사람이라면 Heap 메모리 영역이란 말을 많이 들어봤을 것이다. c, c++을 공부하는 입장이라면 특히 말이다. Heap에 대한 설명 이전에 메모리의 영역이 어떻게 나눠지는지에 대해 간략히 설명하겠다. 컴퓨터의 메모리 영역 컴퓨터의 메모리 영역은 다음 이미지 파일과 같이 분류할 수 있다. STACK 영역에서는 프로그램이 실행되고 프로세스 진행에 따라 지역변수, function콜에 잇따른 frame 단위의 데이터들이 생성되었다, 사라진다 STACK 영역은 보통 1MB 정도의 크기로 할당된다(확장 가능). HEAP 영역에서는 프로그램이 실행되고 있는 시기에 (runtime) 데이터를 할당할 때 그 데이터를 만들어지는 영역이다. 위 이미지 파일에서 볼 수 있듯 STACK 영역은 데.. 2022. 4. 16.
[부동 소수점 floating point] 이론 , 예 , bias 표현법 용어 의미 부동 소수점은 둥둥 떠다닐 수 있는 소수점이다. 주의할 것이 움직이지 않는 의미에서의 부동이 아니다. ( 이는 고정 소수점이라는 실수 표기법으로 따로 존재한다.) 부동 소수점의 탄생계기 부동 소수점이전에 컴퓨터는 내부에서 모든 데이터들을 이진수로 다룬다. 정수의 영역에서는 큰 문제가 없으나, 실수에서 소수점 이하의 부분으로 가게된다면 문제가 발생된다. 그 문제는 소수점 이하의 모든 수를 이진수로 표현하기에는 한계가 있다는 것이다. 그래서 전산학에서 실수 자료형은 근사값을 끌어내 조심히 사용한다. 그리고 어떻게 하면 어느정도 정확도를 보장하며 좀 더 메모리 공간을 효율적으로 사용하여 더 넓은 범위의 수를 표현할 수 있을까 고안해서 나온 것이 부동 소수점이다. (밑의 예에서 고정 소수점 방식과 비.. 2022. 3. 1.