생활코딩/데이터베이스
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)