java中有符号和无符号数据类型发生转换

时间:2023-03-09 16:50:56
java中有符号和无符号数据类型发生转换

package com.itheima.test01;
/*
* byte short int long float double 是有符号位的数
* char boolean 是无符号位的数
* 补码 反码 原码
* 存储:补码
* 正数的原码 反码 补码是一个
*
* -1
* 原码 1000000000...1
* 补码 = 反码 + 1
* 反码1111111111...0
* 补码1111111111...1 在计算机中存储
* 转为char:char表示-1 也全部存储的1111111111111...1
* 转为int: 不知道其是正数还是负数,所以不会变,也全部是011111111...1(符号位是0)
* 所以就是Math.pow(2, 16) - 1;
*/

//负数转换为无符号数据类型之后,负号会消失!!!
public class Test01{
  public static void main(String[] args) {
    System.out.println(Math.pow(2, 16));
    System.out.println((int)(char)(byte)-1);    //答案是65535
  }
}