java对象转为JSON字符串

时间:2025-02-21 16:39:34
原码、反码、补码的关系

做而论道_CS: 用两位十进制运算时,舍弃进位,就是:减去一百。 那么,加 99、再减 100,当然就是 “-1” 了! 计算机使用的是二进制数。 八位二进制数是:0000 0000 ~ 1111 1111。 也就是十进制数:0 ~ 255。 八位二进制的进位,是:2^8 = 256。 那么:加 255 (1111 1111),再减 256,就是 -1 ! 同理:+254 (1111 1110),就是 -2。  +253 (1111 1101),就是 -3。 。。。 。。。  +128 (1000 0000),就是 -128。 以上这些正数,就是计算机专家 “发明” 的补码! 你简单看一眼,你一定能推出关系式:  负数的补码 = 256 + 该负数。 一般化:  负数的补码 = 2^n + 该负数。  n,是补码的位数。 例:求-31 的八位补码是什么? 解:256-31 = 225 = 1110 0001 (二进制)。 这不就求出来了吗! 简不简单? 意不意外? 哪里还需要用什么 “原码取反加一” ! ------------------- 忽略进位,128 ~ 255,就都能当负数使用。 但是,加 127,会怎样呢?  加上 127,是不会产生进位的!  (或者说:进位 = 0。) 舍弃进位,也就是减去一个 0 而已。 因此,127,也就当不成负数了。 所以,加 0 ~ 127,就都是 “加上正数”。 ------------------- 求正数的补码,公式也是雷同的:  正数的补码 = 256 + 该正数。 要知道,加上 256,就是出现一个进位。  进位必须舍弃,所以,256 就不用加了。 于是,公式可以简化为:  正数的补码 = 该正数。 在此处,这就证明了:  零和正数的补码,就该数字本身。 举例,就不用了吧。 计算机专家也是这么说的:  正数的补码,就是该正数。 但是,他们并没有给出证明。 为什么不加以证明呢? 因为这些专家:  弄不懂什么是进位, 更不懂什么是舍弃进位!