java中的强制类型转换 int转为byte

Java中的基本类型

java中所有的基本数值类型都有正负号,所以不要去寻找无符号的数值类型。

基本类型大小最小值最大值包装器类型
boolean----
char16-bitCharacter
byte8 bits-128127Byte
short16 bits-2^152^15-1Short
int32 bits-2^312^31-1Integer
long64 Bits-2^632^63-1Long
float32 bitsIEEE754IEEE754Float
double64 bitsIEEE754IEEE754Double
void---Void

高精度数字:
- BigInteger 支持任意精度的整数
- BigDecimal 支持任何精度的浮点数

java中的基本类型的强制转换都是非常粗暴的,对于浮点型转为整型,都进行非常粗暴的截尾,对于多位数转换为少位数,也只是截断,根本不做舍入和约算。所以就有了下面的结果。

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

public class ByteTrancute {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        byte a=(byte)127;
        byte b=(byte)128;
        byte c=(byte)100;
        int  x=0xff;//255
        byte d=(byte)x;
        x=0x80;//128
        byte f=(byte)x;
        c=(byte)(c*3);
        System.out.println(a+" "+b+" "+c+" "+d+" "+f );
    }

}

输出:

127 -128 44 -1 -128
分析

复习二进制的知识

原码

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

反码

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

补码

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

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

正数:补码即原码
负数:按位取反,末位加一。相当于再求一次补码。
如:
1000 0000 计算得 1 0000 0000 视为-128
1111 1111 计算得   1000 0001 即系-1
0111 1111 就是正值 127

所以,以上的代码中的类型强制转换结果为:

int32bits二进制截成8bits后byte
1270111 11110111 1111127
1281000 00001000 0000-128
2551111 11111111 1111-1
1270111 11110111 1111127
30001 0010 11000010 110044
  • 15
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值