어쨌든 수는 그 자체가 대수고, abstraction 이고 class 다.

그것(수)에 사용되는 연산자 까지 정의되어 있으니 완벽하게 class 다.

개념적으로 추상계층이고, 상속도 가능하다.

즉 어떤 사물이나 현상을 연산자와 함께 encapsulation 하고 있다.


C 언어는 다른 언어들에 비해 상수에 대한 융통성이 부족하긴 하다.

그래서 수리체계에서 흔히 사용되는 연산을 위해 다른 언어에서는 필요없는 별도의 자료형을 정의해야 하곤 한다.

뭐 연산자 오버라이딩(오버로딩이라고 부르지 않는 이유는 몇 번 말했다) 을 지원해 주니 그나마 다행한 일.


1-(-1) == 2 임을 증명하기 위해 음수와 음수의 곱이 양수의 곱임을 증명하는데는

자연수 a, b 에 대해 (-a)*(-b) == a*b

즉 (-a)*(-b) - ab == 0 임을 전개하면 된다.


보수의 표현에서 음과 양의 성질을 '보'완적으로 보는것이 합당하고,

전통 수학과 전산 수학에서

균형을 이루는 공간을 0으로 잡을지, 수의 표현범위를 넘어선 자리올림의 순간으로 잡을지의 차이가 있을 뿐이다.


-0의 표현에 대해선 논란이 있쥐. -128 ~ 127 처럼 비대칭 표현범위를 갖게 된 부분이 아쉽긴한데,

-127 ~ 127 처럼 -0과 0 의 존재를 구별해버리면, 많은 항등식에서 낭비를 갖게 된다.

0이 normalize 되지 않아 비유일성을 갖게 되기 때문이지.

(비교 연산의 결과가 -0인지 0인지 OR로 따져야 되는 젖같은 상황)