黑马程序员技术交流社区
标题:
关于基本数据类型的一个问题
[打印本页]
作者:
严露华
时间:
2013-4-7 23:06
标题:
关于基本数据类型的一个问题
有三个byte类型的变量a,b,c.已知a的值威127,b的值为3,在执行语句”c=(byte)(a+b)"之后,c的值为几?答案为-126. 看了答案,但没明白是怎么运算出来的,求解?最好有图表示。
作者:
ㄨ____陌生
时间:
2013-4-7 23:18
byte的范围有限(-128~127)对于大于128的数就会溢出,当加1后刚刚是128,这是byte的最大值,也就是说最多就可以加1,加一个比1大的数话就会溢出,溢出后byte会从最小值-128开始存储,就是说在-128的基础上再加上多出的数,此时在从最小值-128在加2,所以结果是-126
作者:
wanggang
时间:
2013-4-7 23:23
byte类型的取值范围是:-128-127
127的二进制是:0111 1111
3的二进制是:0000 0011
相加得到的是:1 0000 0010
最高位是1表示负数 补码是符号位不变,其余的变反加1,得到:-1111 1110 ,也就是-126
作者:
张先龙
时间:
2013-4-7 23:26
byte 类型值为-128到127 java byte定义变量后,当该变量值超过127后,会变成负数,127是最大正数,再加1,就超过,变成了-128,最小的负数,称补码溢出,这是补码的特性。你的就相当于是127+1+2=-128+2=-126
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2