键盘手C 2016-04-21 03:21 采纳率: 60%
浏览 2457

java中的64位数据和32位数据的区别

之前在看数据之间的相互比较的时候,遇到这样一个问题
“数值间的相等比较,本质是比较他们二进制存储是否相等。例如:0.3f==0.3返回的是false(32位的2进制的0.3表示和64位的0.3表示是不同的);但是0.5f==0.5返回的是true(因为32位和64位的二进制表示是相同的)”

那么我怎么知道要比较的这两个数在32位和64位中是否相等呢,有什么办法吗》
本人初学java,还望给各位多多指点

  • 写回答

1条回答

  • 程序猿的人生 2016-04-21 03:32
    关注

    所谓32位处理器就是一次只能处理32位,也就是4个字节的数据,而64位处理器一次就能处理64位,即8个字节的数据。如果我们将总长128位的指令分别按照16位、32位、64位为单位进行编辑的话:旧的16位处理器,比如Intel 80286 CPU需要8个指令,32位的处理器需要4个指令,而64位处理器则只要两个指令,显然,在工作频率相同的情况下,64位处理器的处理速度会比16位、32位的更快。而且除了运算能力之外,与32位处理器相比,64位处理器的优势还体现在系统对内存的控制上。由于地址使用的是特殊的整数,而64位处理器的一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。传统32位处理器的寻址空间最大为4GB,使得很多需要大容量内存的数据处理程序在这时都会显得捉襟见肘,形成了运行效率的瓶颈。而64位的处理器在理论上则可以达到1800万个TB,1TB等于1024GB,1GB等于1024MB,所以64位的处理器能够彻底解决32位计算系统所遇到的瓶颈现象,速度快人一等,对于那些要求多处理器可扩展性、更大的可寻址内存、视频/音频/三维处理或较高计算准确性的应用程序而言,AMD 64处理器可提供卓越的性能。

    理论上来说32位的JVM有4G的堆大小限制。但是因为各种条件限制比如交换区,内核地址空间使用,内存碎片,虚拟管理机的管理开销,实际上可用的堆的大小远远比理论上的4G要少。
    在32位windows的机器上,堆最大可以达到1.4G至1.6G。
    在32位solaris的机器上,堆最大可以达到2G
    而在64位的操作系统上,32位的JVM,堆大小可以达到4G

    补充一句,在使用java参数-xms -xmx定义堆大小的时候,
    1. 如果是32bit的jvm超过4G肯定是没用的,定义了4G,最终使用到的可能只有2G
    2. 这两个值最好定义成一样,可以减少java gc的操作,有小幅度性能提高
    http://zhidao.baidu.com/link?url=SwbNk5UI7n_W4WMkfDgAoW9uo0eFpXQT5BW-6Gdkixd8q0oEQsqmrGdpeGU6EyG4H6VDTNXu15quMEOqlzDqO2-6igl5BeHv2YQr972pNX3

    评论

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)