1. java byte 类型的范围
计算机中数据存储采用二进制 ,拿byte 为例 0000 0001
最左边的0 计算机认为这个数字0000 0001 为正数 转化为10进制 -->1;
byte 1000 0000 计算机认为这个数字为 负数 ,最左边的1 来识别。
负数存储在计算机中转换 以-128 为例子 是绝对值128 的反码+1 ,把128 转化为2进制 1000 0000 反码-->0111 1111 加1--->1000 0000。
之前有个困惑 一直说byte 的范围是-128 -128 ,-128 在计算机中转换为 原码的2进制为 1000 0000 这个不是负数码,这个是我们要纯属到计算机中的值 和正负无关 ,只是个 值(脑子有点呆了)。
补码 -1 的反码=补码的反码+1 ,为什么呢 ,这个问题 害的我浪费了一张纸 ,一个补码它可能有 01 ,10, 11 情况(无0000 0000) 然后减 1 加过之后变为 00 ,01 ,10 ,反 码 就变为 11, 10 ,01。 来看补码的反码+1 ,反码 10,01,00 -->+1 -->11,10,01 一样。
这个不是最有趣的,有趣的是 补码+1的反码 是够等于 补码的反码-1 呢? 一个补码它可能有01,10,11 然后加1--> 10,11,100-->反码 --> 01,00,011。
补码的反码-1 一个补码可能是01,10,11 然后反码-->10,01,00-->减一--> 01,00,? 到这里就推不下去了。
正常的想法是补码-1 的反码 等于 补码的反码+1 -->01,10,11-->00,01,10-->11,10,01。
-->01,10,11-->10,01,00-->11,10,01 这个就成立了,为什么会出现上面无法算下去的情况呢 应该 补码的反码 可能是 0000 0000 所以这个就没法算了。