&0xFF

https://blog.csdn.net/xmc281141947/article/details/74740061

& 0xFF
计算机内的存储都是利用二进制的补码进行存储的。
比如我们int=-127 赋值给byte[0]时候 存储的其是其补码10000001(8位)。
当我们把这个byte[0]输出的时候JVM做了一个补位1111111111111111111111111 10000001(32位)很显然这两个补码表示的十进制数字依然是相同的。
-127的原码是前24位为0|11111111 反码是前24位为1|10000000 补码则是前24位为1|10000001
二进制的最高位是符号位(有符号数成立 无符号数不成立)

  • 但是我们有时候要的不是十进制相等,而是只需要补码相等,可以看到这个时候byte转换为int的时候 其高位 已经被补位1了,这个时候我们&0XFF 其本质原因就是想保持二进制补码的一致性。
    0XFF是16进制 其十进制是255 二进制则是 11111111

所以涉及到左移右移 其实移动的是补码,对于正数来说 原码,反码,补码都一样(这是规定),对于负数则不一样(符号位不动,反码则是数值取反,补码则是+1)

左移位:<<,有符号的移位操作 左移操作时将运算数的二进制码整体左移指定位数,左移之后的空位用0补充

右移位:>>,有符号的移位操作 右移操作是将运算数的二进制码整体右移指定位数,右移之后的空位用符号位补充,如果是正数用0补充,负数用1补充。

加法计算公式为:两个数的补码相加,如果是正,则直接输出,如果是负,则除符号位以外取反加一

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、原码反码补码 原码:我们用8位二进制表示一个数,+11的原码为00001011,-11的原码就是1000101...
    梦沉薇露阅读 3,431评论 1 2
  • 今天看了一下md5加密算法 我就很想知道hash[i] 后面的&0xFF到底是什么意思,就开始百度。举个简单的例子...
    不知不怪阅读 22,515评论 2 2
  • 原码 反码 补码 原码:第一位表示符号,其余位表示数值。比如8位2进制: [+1]原 = 0000 0001 [-...
    德彪阅读 540评论 0 0
  • 无意在微博看到一篇文章,说关于习惯可以带给你的东西。看到作者说坚持每天用简书写点东西,所以我下载了这个APP,感觉...
    微辞岂足阅读 238评论 0 0
  • 能够见到阳光的地方一定是风水宝地,尤其在这个冬日里。 办公场所面向阳光,每天的工作生活总会充满阳光。 做个积极向上...
    生命狂奔阅读 190评论 0 0