【Java】Java强制类型转换——int转byte(面试题)

基本类型的强制转换典型笔试面试题

        byte a=(byte)127;//127
        int x = 0X80;//128
        byte b=(byte)x;//-128
        byte c=(byte)100;//100
        c=(byte)(c*3);//44
        int m=0xff;//255
        byte d=(byte)m;//-1

二进制的相关知识

原码

对于二进制数,最高位为符号位,0表示正数,1表示负数,剩余数值部分是真值。

反码

对于二进制数,正数的反码就是它本身,负数的反码除符号位外按位取反。

补码

对于二进制数,正数的补码就是它本身,负数的补码符号位取一,数值部分按位取反后末位加一。

由补码求真值,就是由补码求原码

正数:补码即原码
负数:按位取反,末位加一。相当于再求一次补码。

        //以int 300为例,解释说明(二进制转换为问题)
        int x = 300;
        byte bx = (byte)x; //44
  1. java采用补码存储整数,int型为32位,byte为8位
  2. 那么300在内存中的表示形式:00000000 00000000 00000001 00101100
  3. 这样截取后8位就变成00101100,补码表示的时候第一位是符号位,0正1负
  4. 所以可以知道00101100肯定是一个正数了,正数的补码就是它本身
  5. 再来看它的数值部分:0101100(即44)
  6. 又因为是正数,所以就截取变成44了。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值