美文网首页
原码反码补码以及0xff的与运算

原码反码补码以及0xff的与运算

作者: 梦沉薇露 | 来源:发表于2017-02-25 10:23 被阅读175次

一、原码反码补码

原码:
我们用8位二进制表示一个数,+11的原码为00001011,-11的原码就是10001011
反码:
一个数如果是正,则它的反码与原码相同;
一个数如果是负,则符号位为1,其余各位是对原码取反;
补码:
正整数的补码与原码相同。
求负整数的补码,符号位不变,数值位各位取反,最后整个数加1。

二、为什么要和0xff进行与运算

public static String bytes2HexString(byte[] b) {  
  String ret = "";  
  for (int i = 0; i < b.length; i++) {  
   String hex = Integer.toHexString(b[ i ] & 0xFF);  
   if (hex.length() == 1) {  
    hex = '0' + hex;  
   }  
   ret += hex.toUpperCase();  
  }  
  return ret;  
}  
  • 1的原码为 10000001

  • 1的反码为 11111110

  • 1的补码为 11111111

0的原码为 00000000
0的反码为 11111111(正零和负零的反码相同)

0的补码为 100000000(舍掉打头的1,正零和负零的补码相同)

上述代码中,Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,由于int是32位,而byte只有8位这时会进行补位,
例如补码11111111的十进制数为-1转换为int时变为11111111111111111111111111111111好多1啊,呵呵!即0xffffffff但是这个数是不对的,这种补位就会造成误差。
和0xff相与后,高24比特就会被清0了,结果就对了。

Java中的一个byte,其范围是-128~127的,而Integer.toHexString的参数本来是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,举例来说,一个byte的-1(即0xff),会被转换成int的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。

而0xff默认是整形,所以,一个byte跟0xff相与会先将那个byte转化成整形运算,这样,结果中的高的24个比特就总会被清0,于是结果总是我们想要的。

相关文章

  • 原码反码补码以及0xff的与运算

    一、原码反码补码 原码:我们用8位二进制表示一个数,+11的原码为00001011,-11的原码就是1000101...

  • 原码、反码、补码和移码

    书中关于原码、反码、补码和移码的定义如下(n是机器字长):原码: 反码: 补码: 移码: 原码, 反码, 补码的基...

  • 软件测评师做题技巧

    第一类补码,反码,原码 正数:原码=反码;补码=原码负数:反码=原码求反;补码=反码+1 第二类用例概率的计算 测...

  • 命题-第一章-简答

    写出十进制数-2的原码、补码、反码 【解析】 注意:1.计算机运算是以补码的形式进行的2.正数的原码、反码、补码都...

  • 原码,反码和补码

    在计算机内,有符号数有3种表示法:原码、反码和补码,所有数据的运算都是采用补码进行的。 正数的原码,反码,补码都相...

  • 2018-10-22 Python31 原码、反码、补码

    原码、反码、补码 1)如何计算补码?规则: 正数:原码 = 反码 = 补码负数:反码 = 符号位不变,其他位取反补...

  • 计算机为什么要使用原码、反码、补码

    1. 什么是原码、反码、补码 先看一个例子: +1和-1的原码、反码、补码的表示 原码、反码、补码的计算方式如下:...

  • 补码

    原码、反码、补码 原码:符号位 反码:减法变加法 补码:+1解决-0问题 数学原理 同余 反码:mod127 补码...

  • 原码、反码、补码

    规则: 计算机运算时,都是以补码的形式进行 正数的反码和补码都与原码相同。 负数的反码为对该数的原码除符号位外各位...

  • 按位异或运算 (正数异或负数) 、按位非(~)

    正数反码:与原码相同 负数反码:符号位为“1”,数值位按位 取反。 正数补码:与原码相同 负数补码:求反加一 记住...

网友评论

      本文标题:原码反码补码以及0xff的与运算

      本文链接:https://www.haomeiwen.com/subject/jovgwttx.html