猿问

int强制转化为byte,得到什么?

intiValue=233;
bytebValue=(byte)iValue;//int强制转化为byte
System.out.println(bValue);
如上,输出结果是什么?为什么?
肥皂起泡泡
浏览 328回答 2
2回答

饮歌长啸

计算机中数值都是以二进制补码的形式存储二进制数值的第一位代表数值的符号(正数为0,负数为1)其中正数的补码等于其原码负数的补码等于其原码(除符号位)的反码+1java中int占32位byte占8位int233=00000000000000000000000011101001强转后去掉前面的24个0,得11101001补充:补码转换为原码的规则:对该补码再次求补码接着判断首位是1,为负数,取补码得10010110+1=>-23

翻翻过去那场雪

楼上正确,补一下官方文档:jls7,5.1.3NarrowingPrimitiveConversionAnarrowingconversionofasignedintegertoanintegraltypeTsimplydiscardsallbutthenlowestorderbits,wherenisthenumberofbitsusedtorepresenttypeT.Inadditiontoapossiblelossofinformationaboutthemagnitudeofthenumericvalue,thismaycausethesignoftheresultingvaluetodifferfromthesignoftheinputvalue.
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答