关于计算机符号的趣味随笔
一些事实
大家都知道在计算机里,正数的最高为0,负数的最高位为一。
这个个非常有趣的事情。有一本《编码》的书曾专门谈论这些问题。
正负与中国传统阴阳的关系
最高位定位为阴阳位。占位为阴,空位为阳。(现实生活拟物思维不一样,一般1为男性,0为女性。不过占位为1的思想更原始,1表示有,0表示无。)
剩下的数位都是:000,0000 ~ 111,1111 的递增。
这种编码方法,很自然的每个数加1进位。按照自然整数递增往上。
先看计算机对负数的表达:
表示 | 自然数 | 阴阳属性 |
---|---|---|
1000,0000 | -128 | 1个1,7个0,极阴。符号为阴 |
1000,0001 | -127 | 阴 |
1000,0010 | -126 | 阴 |
... | ... | 阴 |
... | ... | 阴 |
1111,1110 | -2 | 阴 |
1111,1111 | -1 | 阴 |
0000,0000 | 0 | 万物初生,生物最开始都是从细胞分裂开始。亦阳亦阴 |
0000,0001 | 1 | 阳。符号位为阳 |
0000,0010 | 2 | 阳 |
0000,0011 | 3 | 阳 |
... | ... | 阳 |
... | ... | 阳 |
0111,1111 | ... | 极阳 |
为什么函数里通常以 -1 作为错误码。
因为 -1 在内存中显示为,1111,11111。非常有特征。
gdb查看,或者一些错误捕捉能很快的让人记住。
计算机的前辈们应该就是看到了这个特点。
从POSIX,标准库等函数的使用都可以看到这个影子。