Skip to content

[C_Plus]Chapter_01

John edited this page Jul 2, 2017 · 4 revisions

컴퓨터는 오직 0과 1만을 구분할 수 있다. 컴퓨터가 처리하는 최소 컴퓨터가 오직 0 과 1만을 구분할 수 있다. 컴퓨터가 처리하는 최소 단위인 비트(bit)는 0과 1 두가지 상태를 나타 낼수 있기 때문에 N 비트는 2의 N승 개수만큼 상태를 나타 낼 수 있다. 즉 , 1바이트는 (8비트)는 2의 8승 256가지 상태를 나타낼수 있다.

디지털 화란 사물과 정보를 컴퓨터가 인식할 수 있는 비트 집합으로 대응시키는 것

모든 수를 비트 상태로 표현할수 있는것은 아니다.

대상이 명확하게 정해지면 각각의 상태를 표현하기 위하여 몇 비트를 필요한지결정하고 각각의 대상이 나타내는 의미를 비트 상태로 어떻게 대응시킬지도 결정해야만 한다. 비트상태로 표현된 대상이 어떤 식으로 처리되는지도 명확하게 기술해야만한다.

정수타입 정수형은 크게 두가지로 나눌수 있는데 0을 포함한 자연수와 음수까지 표현되는 정수로 나눌 수 있다.

  • 책에서 말하는 내용은 int형과 unsinged int형으로 나눌 수 있다는 뜻으로 생각되요

4비트는 2의 4승으로 16가지 상태를 나타낼수 있으며 숫자를 대응시킨다면 0 ~ 15까지의 수를 대응 시킨다면 0 ~ 15까지의 수를 대응 시킬수 있다.

  • 하나의 비트 (1비트)는 0과 1 두가지의 표현이 가능하므로 4비트는 0000부터 1111까지의 16가지의 상태를 표현할수 있습니다.

1바이트(1byte)에는 8비트로 되어 있으며 unsigned short의 경우 2바이트 16비트로 표현(8bit x 2)되며 unsigned int는 4바이트 이므로 (8bit x 4) 32비트를 표현할수 있다.

누산기(Accumulator)란? 사칙연산을 처리하는 가산회로와 레지스터로 이루어진 CPU

비트의 음수표현은 2의 보수로 비트를 표현한다.

1의 보수 0은 1로 1은 0으로 각각의 비트를 반전화 하여 나타낸것

2의 보수 1의 보수에 +1을 더한것을 의미한다. 각비트를 반전시킨후 1을 더한것이다

4비트로 표현되는 2진수는 0000에서 시작하여 1111로 진행한뒤에 다시 0000으로 돌아가게 된다. -1은 1111로 대응시킨다. -1은 0001 ->1의 보수 1110 이고 2의 보수로 하면 1111이 된다.

최대값과 최소값

int main(void)
{
	int i=1;
	i=(i<<31);
	std::cout<< i<<std::endl;

	i=~i;
	std::cout<<i<<std::endl;

	unsigned ui=0;
	std::cout<<ui<<std::endl;

	ui=-1;
	std::cout<<ui<<std::endl;
}

최대값과 최소값은 비트 반전만 하면 되므로 비트 반전 연산자(~)를 이용하여 구할 수 있다.

비트 이동 연산자

C++ 에서는 <<,>>를 통하여 원하는 만큼 비트를 이동 시킬수 있다.

즉 -128 ~ 127까지의 256개의 정수를 표현할 수 있다.

<< , >> 규칙 (1) <<N : 비트 상태를 N만큼 왼쪽으로 이동 시킨다. 가장 왼쪽의 넘치는 N개의 비트들은 버리고, 오른쪽에 새로 생기는 N개의 비트들은 모두 0개로 채운다.

(2) >> N :비트 상태를 N만큼 오른쪽으로 이동 시킨다. 가장 오른쪽의 넘치는 N개의 비트들을 버리고 왼쪽에 새로 생기는 N개의 비트들을 부호 비트가 존재할 경우 부호 비트를 채우고, 부호 비트가 존재하지 않을 경우 0으로 채운다. 부호가 없는 unsigned char 경우 무조건 0으로 채워진다.

unsigned long  max=18446744073709551615UL;

std::cout<< max <<std::endl;
Clone this wiki locally