原码,反码,补码的概念
历史背景
人们为了1 和 -1 相加等于0的客观世界运算而创造出来的。主要时为了对负数做处理前置说明
计算机的存储是利用 二进制的补码来进行存储的.
以一个字节byte 8位为例:
对于正数1,00000001它的反码和补码都是本身。
对于负数-1,10000001他的反码是11111110,它的补码是111111111- 原码
原码是数据原本的二进制表示 如 1的原码(00000001),-1的原码(10000001) - 反码
原码除了符号位按位取反之后的二进制表示 如 -1的原码(11111110) - 补码
反码+1的二进制表示,如 -1的补码(11111111)
所以:当我们获取文件流数据,或者网络数据流数据的byte,要获取对应的int值做输出等操的时候,要&0xff,原因就是为了保证补码的一致性
如:获取byte数据 -127 的 原码即 11111111 反码 10000000 补码 10000001
转为int时高24位补1,-127的int补码:11111111 11111111 11111111 10000001
按位&0xff 得 00000000 00000000 00000000 10000001
2855

被折叠的 条评论
为什么被折叠?



