做而论道_CS: 虽然,计算机,使用二进制数。 但是,二进制数,它也是数。 并不是什么 “码” ! 二进制数与十进制数,两者的运算方法,是雷同的。 无论二进制、十进制或其它进制,都有如下这个规律。 ================= 保持位数不变,舍弃进位,就可以: 【把正数当负数、把加法当减法!】 ================= 例如,两位十进制,范围是:0 ~ 99。 (最大值是 99。) 那么:25 - 1 = 24 25 + 99 = (一百) 24 如果你舍弃了进位,这两种算法,功能就是相同的! 即,舍弃了进位: +99,就是-1 了、 加法,也就是减法运算了。 你有疑问吗? ------------------ 对于八位二进制数,其数值范围是: 0000 0000 ~ 1111 1111, 也就是十进制的:0 ~ 255。 此处的 255,就可以当做-1 使用! 如 13 - 1 = 12,八位机将如下计算: 0000 1101 + 1111 1111 --------- (进位1) 0000 1100 当你舍弃了进位,用加法,就实现了减法运算! 你有疑问吗? -------------------------- 这个二进制数 1111 1111, 它到底是 255、还是-1 呢! 它究竟是个什么东西? 这与 “符号位原码反码” 一丁点关系都没有! 它只取决于你的算法。 你保留进位,它就是正数 255。 你舍弃进位,它就是负数-1 (的补码)。 也就是说,其值是正是负: 取决于【你如何看待进位。】 并不是取决于什么 “符号位” ! 懂吗?
Fatal signal 11 (SIGSEGV), code 2, fault addr 0x9ff811c0 in tid 28902
为什么1个字节的取值范围是-128~127