티스토리 뷰

비트코인의 블록체인 장부를 보거나 혹은 제 영상에 따라 비밀키를 생성하고 주소를 생성하는 절차를 따라해 보신 분들은 16진수를 상당히 많이 보셨을 것 같습니다.

 

하나의 블록은 블록헤더와 수많은 거래들로 이루어져 있는데요. 해당 블록 정보를 볼때면 또 어김없이 수많은 16진수 표현이 보입니다.

 

일반인들이 보실 때 이런 표현이 상당히 낯설고 거리감이 있어 보일 것 같은데요. 2진수 16진수에 대한 울렁증을 좀 해결해드리고자 글을 작성해 봅니다.

 

컴퓨터의 모든 데이터는 0과 1의 이진 데이터로 기록이 됩니다.

여기부터가 잘 공감되지 않는 분들이 많을 것 같은데요..

 

아래 메모리 반도체를 보세요

참 딱딱하게 생겼죠.

저 안에는 수많은 스위치가 들어 있답니다.

 

그냥 말그대로 스위치에요. 우리 집에도 방마다 등이 있고 스위치가 있는 것과 같아요.

그리고 등 하나는 2개의 상태를 표현할 수 있죠

 

ON 그리고 OFF,

 

그렇다면 등이 2개 있다면 어떤가요?

그럼 아래와 같이 4가지 상태를 표현할 수 있겠죠

  1. ON, ON
  2. ON, OFF
  3. OFF, ON
  4. OFF, OFF

네 여기까지는 어렵지 않으셨으면 좋겠어요.

상태를 표현한다는 것 뿐이지. 각 상태가 무엇을 의미하는 지에 대해서는 제가 아직 이야기 하지 않았어요.

 

이런 질문을 던져볼게요

등이 n 개 있다면 몇개의 상태가 표현 가능할까요?

잠깐이라도 생각을 해보시면 좋겠어요

..

..

..

..

..

..

 

정답은 2 의 n 제곱 상태까지 표현이 가능할꺼에요.

 

실제로 위의 메모리는 그 안에 수백만개의 등을 가지고 있어요.

그래서 2의 수백만 제곱개수 만큼의 상태를 표현할 수가 있죠.

 

그리고 현재 여러 분의 PC에 꽂혀있는 메모리의 상태를 현미경으로 들여다보면 아래와 같이 수백만개의 등(스위치)에 불이 들어왔다 꺼졌다 하면서 끊임없이 상태가 변하고 있는 모습을 보실 수 있으실 거에요.

 

그렇다면 특정 시점에 메모리의 어떤 내부 상태를 간단하게 불이 들어온 상태를 1, 꺼진 상태를 0으로 표현해도 문제가 없겠죠

 

그렇다면 아래와 같이 표현이 가능하겠죠

01010110101111111010101010001111

 

그리고 이게 바로 물리적으로 저장되는 데이터의 모습이에요.

 

그런데 데이터를 이렇게 표시하는 것보다는 이진수 4자리씩 끊어서, 16진수 한 문자로 표현하면 훨씬 더 간편하게 표현이 가능해요.

이진수 4자리는 2의 4제곱 즉 16가지 상태를 표현할 수 있거든요.

그래서 각 상태를 16진수에서 사용하는 숫자 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f 이렇게 16개중 하나로 순서대로 매핑을 하는거에요.

※ 2진수 16진수에 대하여 조금 더 자세한 설명은 이 영상을 참고해 주세요

 

그럼 위 2진수를 먼저 4자리씩 끊어볼께요.

0101 0110 1011 1111 1010 1010 1000 1111

 

이제 2진수 4자리씩을 16진수로 표현하면

5 6 b f a a 8 f

가 되겠죠.

 

어떤가요? 길이가 1/4 로 줄어들어서 훨씬 간편하죠!

 

16진수로 표현된 데이터들은 그냥 메모리내의 특정 상태를 2진수로 표현하기에는 너무 길어서 16진수로 짧게 표현한 것 뿐입니다.

(그런데 여기서 실제로 이진수 01010110101111111010101010001111 값은 십진수로 표현할 때 1455401615 가 되고 이를 다시 16진수로 표현하면 정확히 56bfaa8f 가 된다는 사실도 기억해 주세요. 재밌죠ㅋ)

 

그래서 16진수가 여기저기서 튀어 나오는 것이에요.

 

그리고 여기서 특별히 하나 더 알아가면 좋은 것이 데이터의 크기에 대한 단위인데요.

 

일반적으로 스위치 하나로 표현가능한 데이터의 크기를 1BIT 라고 하고요.

스위치 8개로 표현가능한 데이터 사이즈를 1Byte 라고 해요.

 

그러므로 16진수 2개가 모이면 1Byte 가 된답니다.

 

비트코인에서 사용하는 sha256 해시 함수는 그 결과가 항상 256비트가 되고요.

이를 16진수로 표현하면, 길이가 64글자의 16진수 표현이 되겠죠

 

그래서 위의 블록 이미지에서 빨간네모로 표시된 블록의 해시값과 거래의 아이디값이 16진수 64개로 표현된 값이 되는 것입니다.

 

결론을 내볼께요.

이진데이터는 16진수로 표현하면 짧고 간편하기 때문에 16진수로 표현을 한다.

 

그러므로 16진수 표현을 만나면 당황하지 마시고 그냥 이진데이터(데이터 더미)구나 라고 봐주시면 좋을 것 같습니다!

 


 

https://www.youtube.com/watch?v=j_kxlaj9lVA 

 

728x90
반응형
댓글
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함