비트 연산
·
Programming/기타
비트란?한개 혹은 두 개의 이진수에 대해 비트 단위로 적용되는 연산. 일반적으로 비트라고 하는것은 데이터의 가장 작은 단위라고 할 수 있다.모든 메모리는 0과 1을 가지고 이진수로 저장이 되는데, 이 0혹은 1의 값을 비트라고 부르는 것이다.이 비트가 8개 모이면 바이트가 되어 비로소 무언가를 해볼만한 사이즈가 된다. 그렇다면 비트 연산이란 무엇인가?비트 수준으로 값을 다루는 경우 비트 단위 연산자라는 것을 사용하는데, 정수형 수식(char, short, int, long, long long 등등...)에 사용할 수 있는 연산자로, 시스템에 종속적이라는 특징을 갖고 있다. 이 비트 연산자는 6가지가 존재하는데 하나하나 알아보도록 하자.연산자 종류연산자 이름연산자논리 연산자(단항) 비트단위 보수~비트단위 ..
UTF - 8 / 16
·
Programming/기타
UTF에 대해서UTF란 유니코드 변환 형식(Unicode Transformation Format) 인코딩을 의미하는데,여기서 인코딩은 어떠한 정보, 데이터를 다른 형식으로 변환시키는 과정을 뜻한다. 대표적인 UTF방식으로 UTF-8과 16이 존재한다. 유니코드란?컴퓨터는 0과 1의 이진법만 이해하는데, 사람은 익히기만 한다면 그와 달리 매우 많은 언어를 구사할 수 있다.따라서 인간의 언어(자연어)를 컴퓨터(기계어)가 이해하기 위해서는 중개자가 필요하다.그 중개자 역할을 하는 것이 유니코드이다. 어떻게 이루어지는가?예를 들어 유니코드를 UTF-8로 인코딩을 한다고 가정해보자.인코딩 규칙은 다음과 같다.1. 1개 바이트를 사용하는 경우- 이 경우에는 가장 큰 비트에 0을 할당하고, 나머지 7비트에 기존의 아..
구조체 패딩
·
Programming/기타
구조체 패딩이란?CPU에서는 데이터를 메모리에서 읽고 쓸 때 정렬되어 있는 경우에 더 빠르게 접근할 수 있다. 예를 들어 32비트 컴퓨터의 경우 4바이트 단위로 저장되어 있어야 더 효율적으로 접근이 가능하다. 만약 4바이트 단위가 아니라 6바이트, 7바이트 등의 형태로 정렬되어 있는 경우 추가적인 연산이 발생하면서 성능이 저하될 수 있다. 예시를 한번 들어보자. struct Pad{ char a; long long b;}; 이 구조체의 멤버 b의 자료형은 long long이기 때문에 8바이트의 크기를 갖는다. 이 변수를 읽어들이는 경우 32비트 OS의 경우 3번의 접근이 필요하고, 64비트 OS의 경우에도 2번의 접근을 필요로 하게 된다. 하지만 패딩을 통해 보정을 해준다면?32비트의 경우 2..
워치독 타이머(Watchdog Timer)
·
Programming/기타
워치독 타이머란?정의컴퓨터의 오작동을 감지하고자 쓰이는 일종의 데드맨 스위치 같은 것.정상 작동중인 컴퓨터는 타임아웃이나 무한 루프같은 상황에 빠지지 않도록 일정 시간마다 정기적으로 워치독 타이머를 재가동 시킨다. 만약 하드웨어 오류나 프로그램 오류로 인해 컴퓨터가 워치독을 재가동 시키는데 실패하면 타이머가 시간을 두고 타임 아웃 신호를 생성하게 된다. 이 타임아웃 신호를 통해 컴퓨터를 재부팅 하는 등 여러 조치를 취하게 된다. 이런 워치독 타이머는 당연하게도 별도의 회로를 갖추거나 시스템과 독립적으로 작동하도록 설계되어있다. 보통 사람이 자주 관리하기 힘든 임베디드 시스템 같은 곳에서 주로 사용된다. 구조워치독이 하나인 경우워치독이 시스템에 하나인 경우에는 그림과 같이 클럭 신호를 받고 컴퓨터가 주기적..
소프트웨어의 정의와 특성
·
Programming/기타
소프트웨어의 정의 응용 프로그램이나 데이터처럼 컴퓨터를 제어하고, 명령을 수행할 수 있게 만들어주는 프로그램이라고 할 수 있다. 원래는 문자 그대로 컴퓨터에서 동작되거나 처리되는 것만을 소프트웨어라고 불렀지만, 현재는 소프트웨어의 범위가 넓어져 수많은 것들이 소프트웨어 취급을 받고 있다. (게임, 네비게이션 지도 등등도 포함된다.)  소프트웨어는 크게 시스템 소프트웨어와 응용 소프트웨어로 나눌 수 있다. 시스템 소프트웨어는 응용 소프트웨어가 작동하는 환경을 만들거나 컴퓨터를 유지, 관리하는데 사용되는 소프트웨어이다. 그 특성때문에 플랫폼이라고도 부른다. 사용자가 컴퓨터 하드웨어의 물리적인 특성이나 구조를 전부 알지 못하더라도 컴퓨터 시스템을 사용할 수 있게 도와주는 역할을 한다.대표적인 시스템 소프트웨어..
인터페이스와 추상클래스
·
Programming/기타
인터페이스인터페이스란?본래 프로그래밍 언어에서는 중요한 개념이 하나 존재한다. 같은 구문이 두 가지 이상의 의미로 해석될 여지가 있어서는 안 된다라는 것이다. 이러한 모호성을 해결하기 위해 만약 예약어가 겹치는 경우 어느 라이브러리의 예약어인지를 추가로 작성을 해줘야 한다. 이러한 이유로 다중 상속은 본래 불가능하지만 가끔 필요한 경우가 존재한다. 이러한 경우를 해결하기 위해 도입 된 것이 바로 인터페이스이다. 인터페이스는 interface 키워드를 이용하여 선언이 가능하다. 그러나 몇가지 제한사항이 존재하는데,1. 인터페이스는 추상 메서드와 상수만을 포함한다.2. 접근 제한자는 모두 public이고, 인터페이스를 상속받은 클래스에게 오버라이드를 강제한다.3. 상속받은 클래스에서 구현하는 메서드도 모두 ..