생활코딩/데이터베이스

mySQL data type (signed와 non singed)

7he8oy 2021. 1. 5. 14:24

mySQL manual에 들어가면 자세히 나온다. 

 

그중 data type과 관련하여 기록이 필요한 것을 몇 가지 기록!


* signed와 nonsigned

내가 궁금했던 것은 signed에서 -가 +보다 한자리 더 많은 이유였다.

 

 

 

구글링 결과 그 답은 아래에서 찾았다.

 

 

여기서 2's complement는 한국말로 2의 보수라고 한다.

그 계산법은 아래와 같으며 2의 보수를 구하는 두 가지 방법이다.

 

 

출처: 갓키피디아

그러니까 2의 보수라는 것은 현재의 수 보다 한 자리 높은 2진수에서 현재의 수를 뺀 결과값을 의미하며,

이것은 모든 자리를 역전시키고, (ex. 0 -> 1 / 1 -> 0) 마지막에 1을 더한 것과 같다.

 

이 과정을 거치면 위의 구글링 결과값 처럼 나온다.

7과 -7를 예로 들면,

 

0111= 7 이다. 이때 맨 앞 숫자는 부호표시로 제하고 111의 2의 보수를 구하면
1000 - 111을 계산하면 된다. 이는 001이 나온다. 그 이후에 부호를 뜻하는 1을 더해주면 1001이 되며 이것은 signed에서 -7을 의미하게 된다.

 

 


 

음수가 한 자리 더 많은 것에 대한 이해 

 

정확한 이해인지는 모르겠으나 

그 이유는 위 체계에서 1000은 000의 2의 보수를 구했을 때 나오는 것으로

절차를 그대로 따라가면 이는 -8을 의미한다. ( 1000 - 000 = 1000)