做而论道_CS: 虽然,计算机使用的是:二进制数。 但是,进行算术计算时,二进制数也是数,与十进制是雷同的。 二进制数,也是数,它也是完全正常的数字。 并非是什么乱七八糟的:原码反码补码。 千万不要听信那些砖家胡讲! 就说四位二进制数吧。 四位数范围是:0000 ~ 1111。 相当于十进制:0 ~ 15。 出现进位,即:2^4 = 16。 这些数中,既没有小数点,也没有符号位。 它们,都是正整数! 计算机砖家就给它们编造了一个名称:无符号数。 其实,这就是【忽悠】! 计算机中有个加法器,其运算规则是:逢二进一。 找两个无符号数相加,列竖式如下: 0 1 0 1 = 5 +1 1 1 1 = 15 ----------- 进 1、 0 1 0 0 = 16 + 4 = 20 这就是 “无符号数” 的加法: 5 + 15 = 16 + 4 = 20。 计算完全正确! ----------------- 但是,如果你忽略了进位呢? (或者说:故意舍弃了进位。) 这就少算了 16 ! 那么就是:5 + 15-16 = 5-1 = 4。 此时的 +15,就相当于-1 了! 为什么是-1 ? 因为你:舍弃了进位,少算了 16。 所以有:+15-16 = -1。 加法的竖式,依然如下: 0 1 0 1 = 5 +1 1 1 1 = 15 (=-1) ----------- 略掉、0 1 0 0 = 4 但是,此时,这可就是【减法运算】了。 你看吧,本来是两个 “无符号数” 相加, 丢了进位,就变成了 “有符号数” 相减! 由此可知,所谓的 “有符号数、无符号数、符号位”,就是瞎掰! 二进制数,也就是普通的数字! 只是因为: “弄丢了进位”,才会出来 “负数” 和 “减法”。
四叉树问题
补码:统一加减运算