计算机中数值以补码的形式表示和存储,正数的原码、反码、补码相同,负数的补码为其原码的绝对值所有位取反后加一。
一个字节为8位,在计算机中补码01111111转换为原码十进制为127,补码10000000转换为原码十进制为-128,所以一个字节所表示的范围为-128~127。
public static void main(String[] args) {
// TODO Auto-generated method stub
int i=0xaa;
//结果170
System.out.println(i);
for(int j=0;j<32;j++){
int k=0x00000001&i>>j;
//结果为0000 0000 1010 1010
System.out.println(k);
}
byte b=(byte)i;
//其实为System.out.println((int)b);默认转换为int型结果为-86
System.out.println(b);
for(int j=0;j<32;j++){
int k=0x00000001&(int)b>>j;
//结果为1111 1111 1010 1010
System.out.println(k);
}
//结果为170
System.out.println(0x000000ff&b);
}
System.out.println();以原码十进制的形式输出
b=1010 1010转换为原码十进制为-86,(int)b=1111 1111 1010 1010转换为原码十进制也要为-86