이진수(Binary number)

이진수는 0과 1 두 숫자만 가지고

수를 표현하는 체계입니다.

 

이진수라는 이름이 뭔가

10진수보다 수가 작거나하는

늬앙스를 가질 수 있지만

이진수는 10진수와 똑같은 숫자 체계입니다.

 

인간은 손가락을 10개 가졌기 때문에

관습적으로 10진법을 사용한다고 합니다.

 

사람들은 직관적으로 10의 개념을 갖습니다.

손가락이 10개 달려있고

이 손가락을 움직이는 신경은

뇌에 긴밀하게 연결되어 있기 때문입니다.

 

우리의 감각중에서 가장 뛰어난 부위중

하나는 손가락입니다.

 

그래서 우리는 새로운 사물을 알기위해

먼저 눈으로 본 후 손으로 만지면서

깊은 인지를 합니다.

 

대표적인 예의 하나는 자동차죠.

인간이 브랜드가 다른 새로운 자동차도

즉시 운전할 수 있는 것은

자동차의 핸들을 잡는 순간

이 차에 대한 정보와 작동방법등을

뇌에서 인지하고 손의 촉감과

피드백을 통해 자동차 조작법이란

인체내의 소프트웨어를 업그레이드하기 때문입니다.

 

 

인공지능 소프트웨어가 탑재된 자동차라도

새로운 자동차를 운전하기 위해선

운전 소프트웨어를 업그레이드 해줘야 합니다.

 

반면 보통의 사람이라도 운전대만 잡으면

거의 모든 차종을 운전할 수 있습니다.

인간의 두뇌능력은 탁월하죠.

 

우연인지 모르지만

인간에겐 손가락이 열개 있어서

10이란 숫자를 직관적으로 인지할 수 있게 되있습니다.

 

그러다 보니 10진수를 보편적으로 사용하는 겁니다.

 

그러나 수의 체계에서 10진수가

불리할 때가 있습니다.

 

컴퓨터는 0과1을 이진수로 사용하는데

이진수는 확장성이 좋습니다.

컴퓨터에서 쓰는 수중에는

2진수 8진수 16진수가 있습니다.

이는 2의3승 2의4승으로

호환성이 좋습니다.

 

메모리의 주소는 16진수로 표기합니다.

 

32비트 메모리를 표현하면

 

2진수는

 0000 0000 0000 0000 0000 0000 0000 0000
~1111 1111 1111 1111 1111 1111 1111 1111

16진수는

0000 0000 ~ FFFF FFFF

로 표현할 수 있습니다.

 

2진수의 4개 비트는 16진수 1개로 (2의4승)
표현할 수 있기 때문에
숫자 체계간 전환이 쉽습니다.

또 CPU의 논리 회로라는 것은 
1과0으로 연산을 하기 때문에
결국 10진수는 인간에게 보여주기 위한
숫자일 뿐 인간이 정보를 인식할 수 있도록

변환하는 것일 뿐입니다.

 

만약에 AI가 컴퓨터를 사용한다면

10진수 시스템을 사용할 일은 없을 겁니다.

(언제든 변환할 수 있는 사실과는 별개로)

 

IP 주소

우리가 사용하는 IP주소는 32비트 IPv4 입니다.

IPv6라는 128비트 체계도 있는데

뭐 IP 주소가 고갈되니 마니 했던게

10년전 같은데

 

기업 같이 인터넷을 많이 쓰는 곳에는

사설망 VPN 을 깔고 로컬 네트워크에서

서브넷 주소를 사용할 수도 있고

32비트 주소를 전송하는게

네트워크적으로는 효율이 좋기 때문에

아직까지는 IPv4 를 많이 사용하는 것 같습니다.

 

IPv4 는 32비트로 인터넷 주소를 ping 해보면

실제 IP 주소가 나옵니다.

C:\Users\masterkay>ping www.naver.com

Ping e6030.a.akamaiedge.net [23.50.3.12] 32바이트 데이터 사용:
23.50.3.12의 응답: 바이트=32 시간=1ms TTL=57
23.50.3.12의 응답: 바이트=32 시간<1ms TTL=57
23.50.3.12의 응답: 바이트=32 시간=1ms TTL=57
23.50.3.12의 응답: 바이트=32 시간=1ms TTL=57

23.50.3.12에 대한 Ping 통계:
    패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
    최소 = 0ms, 최대 = 1ms, 평균 = 0ms

IP 주소는 32비트이므로 숫자 개수로는

약 42억개의 주소가 가능합니다만

 

실제로는 IP주소에 네트워크 클래스를

부여해서 네트워크 ID와 서브넷의

사용용도가 정해져 있습니다.

 

여기서는 네트워크 클래스에 대한

포스팅은 아니고 단순히 IP주소가

32비트 숫자라는 것을 이해하기 위함입니다.

 

물론 당연한 것이지만

컴퓨터에 익숙하지 않은 사람들은

이 당연한 일에 익숙해지기 어렵기 마련입니다.

 

위에 23.50.3.12 를 32비트 이진수 표기로 변환해 보겠습니다.

 

23 : 0001 0111
50 : 0011 0010
 3 : 0000 0011
12 : 0000 1100

이것을 다 붙여 놓으면

0001 0111 0011 0010 0000 0011 0000 1100

이렇게 된다.

결국 네트워크 상의 장치들(라우터, 스위치 등)은

이 이진수(binary)들을 받아서 프레임을

어디로 보내야 하는지 결정하게 됩니다.

 

컴퓨터와 네트워크 실력을 쌓기 위해서는

이진수와 함께 공부하는 것이 좋습니다.

 

로컬네트워크의 서브넷 마스크 계산 (Subnet Mask)

 

로컬네트워크의 서브넷 마스크 계산 (Subnet Mask)

서브넷 마스크 계산 서브넷 마스크는 로컬 네트워크 안에서 호스트들의 IP를 부여합니다. 예를 들어 라우터(집에서는 공유기)에 연결된 PC, 노트북, 전화기, 게임기 등의 장치를 호스트라고 합니

digiconfactory.tistory.com

파이썬 네트워크 프로그래밍 1 | 파이썬 소켓(socket) 모듈

 

파이썬 네트워크 프로그래밍 1 | 파이썬 소켓(socket) 모듈

소켓 라이브러리 파이썬으로 네트워크 프로그램을 하기 위해서는 라이브러리를 가져와야 해야 합니다. (import) 기본이 되는 socket 모듈을 가져와서 네트워크 프로그램을 시작해보겠습니다. 소켓

digiconfactory.tistory.com

이진법과 2의 보수

 

이진법과 2의 보수

이진법이란? 이진법은 무엇인가? 아니 그 전에 십진법에 대해서 알아본다. 십진법은 누구나 알고 있는 진법이다. 십진법이라고 가르쳐주지 않아서 헷갈릴 뿐이다. 십진법은 수를 아래와 같이 손

digiconfactory.tistory.com

 

공유하기

facebook twitter kakaoTalk kakaostory naver band