miller
发布于

-127 原码 反码 补码

char类型-127的有符号右移1位操作

-127的原码: 1111 1111

-127的反码: 1000 0000

-127的补码: 1000 0001

-127转换成整形高位用1填: 1111 1111 1111 1111 1111 1111 1000 0001

-127右移1位, 高位用1填补: 1111 1111 1111 1111 1111 1111 1100 0000

-127右移1位的反码: 1111 1111 1111 1111 1111 1111 1011 1111

-127右移1位的原码: 1000 0000 0000 0000 0000 0000 0100 0000


8位只能标识 [-128,127]

<<      :     左移运算符,右边空出的位用0填补,高位左移溢出则舍弃该高位:num << 1,相当于num乘以2
>>      :     右移运算符,左边空出的位用0或者1填,正数用0负数用1填,低位右移溢出则舍弃该位。num >> 1,即num除以2
>>>     :     无符号右移,忽略符号位,空位都以0补齐

  byte[] a = new byte[10];
        a[0] = -127;
        a[1] = -128;
        System.out.println(a[0]);
        int c = a[0] & 0xFF;
        System.out.println(c);
        a[2] = (byte) (a[0]<<1);
        System.out.println(a[2]);
        a[3] = (byte) (a[0]>>1);
        System.out.println(a[3]);
浏览 (1481)
点赞
收藏
评论