java二进制流_Java中的二进制流0101

本文介绍了Java中整型数据在内存中的存储方式,特别是二进制流和补码的概念。通过示例展示了如何验证计算机存储整数的补码形式,并探讨了字节序在多字节数据存储中的作用。此外,还讨论了如何使用二进制流构造和解码字符串。
摘要由CSDN通过智能技术生成

今天在看HashMap的源码时,其hash算法使用了无符号右移16位的操作,好奇Java内存中到底是怎么存放这些数字的。虽然以前知道,计算机都是使用补码的形式存放的整数值,但我都没深究过内存中的字节。今天查查资料,把自己所学的记录在此。

java中基本整型的长度

java中基本整型的长度如下图:

byte:8位,short:16位,int:32位,long:64位0591ab35d47caf5406f1c743f987c916.png

而计算机中,程序员用得最多的是十进制和十六进制,十进制符合人的计算习惯,而二进制因为0101太长看起来不方便,将机器内的二进制转为十六进制方便人查看。

Java也提供了这两种进制的字面量,不写任何前缀如int i = 10;即代表该整型i是赋值十进制的10,而int i = 0x10;则表示i赋值的是十六进制的10,即十进制的16。System.out.println(i);默认以十进制打印出i,而System.out.printf("%x",i);则是以16进制打印i。

但值得注意的是0x10这个字面量是以int类型的,如0xff表示的是int类型的255,如果将其赋值给byte类型byte b = 0xff,编译器会报错,因为byte最大为127。这样的话,难道我就不能为一个byte赋值为全1吗?可以的,但是需要借

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值