int转换为byte,截取的问题

lewesly 2015-09-10 10:32:00
int:257的二进制形式是“100000001”一共9位数,将257转换为byte类型,因为一比特只有8位,所以转换时需要舍弃掉一位数,请问为什么舍弃的是第一位的1,而不是舍弃最后的1?有人和我说这是二进制与运算和左/右移动运算符有关。

还有第二个问题:在int转换为float时,由于float只有23位精度,所以需要舍弃掉int的一些数据,请问为什么舍弃的是后面的位,而不是前面的位。
...全文
178 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
1,应该理解为保留后八位,因为只能存储八位 2,int-->float不损失精度,float的取值范围比int大,只要以float的存储形式存储就行了
public class Test {
    public static void main(String[] args) {
		int i = 385;
		System.out.println(Integer.toBinaryString(i));
		float f = i;
		int j = Float.floatToIntBits(f);
		System.out.println(Integer.toBinaryString(j));//浮点类型385f的二进制形式
		System.out.println(f);
		
		int max = Integer.MAX_VALUE;
		System.out.println(Integer.toBinaryString(max));
		float f_max = max;
		System.out.println(Integer.toBinaryString(Float.floatToIntBits(f_max)));
		System.out.println(max);
		System.out.println(f_max);
		
		int min = Integer.MIN_VALUE;
		System.out.println(Integer.toBinaryString(min));
		float f_min = min;
		System.out.println(Integer.toBinaryString(Float.floatToIntBits(f_min)));
		System.out.println(min);
		System.out.println(f_min);
	}
}
解开者 2015-09-11
  • 打赏
  • 举报
回复
int到float的转换就是给定有效数字长度的取近似值,肯定是从高到低数够位数了之后截掉后边的啊…… IEEE 754浮点数标准

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧