首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux64程序移植

要获得能在64系统下运行的程序,特别是达到只维护同一套代码就能获得在32及64系统下都能运行的程序,编码时需遵循一定的原则,是一个较为繁琐的过程。...编译器按照自然边界对数据类型进行对齐;换而言之,32的数据类型在64系统上要按照32边界进行对齐,而64的数据类型在64系统上则要按照64边界进行对齐。...2.2 数据对齐 默认情况下,编译器按照自然边界对数据类型进行对齐;换而言之,32的数据类型在64系统上要按照32边界进行对齐,而64的数据类型在64系统上则要按照64边界进行对齐。...test { int i1; 32 32 32填充 double d; 64 64 int i2; 32 32 32填充 long l; 32 64 }; 结构大小为20...3 运营环境 修改脚本支持64环境 一些数据需要用64程序重新生成,供程序使用 4 总结 主流的硬件供应商最近都在扩充自己的64产品,这是因为64平台可以提供更好的性能和可伸缩性。

4.4K81
您找到你想要的搜索结果了吗?
是的
没有找到

JDK1.8JDK1.8集合源码阅读——HashMap

一、前言 笔者之前看过一篇关于jdk1.8的HashMap源码分析,作者对里面的解读很到位,将代码里关键的地方都说了一遍,值得推荐。...MAXIMUM_CAPACITY : n + 1; } ​ |是或运算符,比如说0100 | 0011 = 0111,>>>是无符号右移,忽略符号,空位都以0补齐,比如说0100 >>> 2 = 0001...的操作的目的就是把n从最高位以下的几位都填充为1,以010011为例,010011 >>> 1 = 001001,然后001001 | 010011 = 011011,然后再把011011无符号右移两:...011011 >>> 2 = 000110,然后000110 | 011011 = 011111,后面的4、8、16计算过程就都省去了,int类型为32,所以计算到16就全部结束了,最终得到的就是最高位及其以下的都为...null; Node next; do { next = e.next; //根据e的hash值和旧的容量做与运算是否为

1.5K90

JDK1.8JDK1.8集合源码阅读——HashMap

一、前言 笔者之前看过一篇关于jdk1.8的HashMap源码分析,作者对里面的解读很到位,将代码里关键的地方都说了一遍,值得推荐。...MAXIMUM_CAPACITY : n + 1; } ​ |是或运算符,比如说0100 | 0011 = 0111,>>>是无符号右移,忽略符号,空位都以0补齐,比如说0100 >>> 2 = 0001...的操作的目的就是把n从最高位以下的几位都填充为1,以010011为例,010011 >>> 1 = 001001,然后001001 | 010011 = 011011,然后再把011011无符号右移两:...011011 >>> 2 = 000110,然后000110 | 011011 = 011111,后面的4、8、16计算过程就都省去了,int类型为32,所以计算到16就全部结束了,最终得到的就是最高位及其以下的都为...null; Node next; do { next = e.next; //根据e的hash值和旧的容量做与运算是否为

64140

JDK1.8JDK1.8集合源码阅读——IdentityHashMap

IdentityHashMap的结构与HashMap等不同,其实就是一个Object[]数组,数组的前一存放Key,后面一个位置就存放它对应的Value。...>>则是右移运算符,左边的用原有标志补充(负数为1,正数为0),比如说-3:1111 1101 >> 2 = 1111 1111(int 其实有32,这里偷懒,大家懂就行),而>>>是无符号右移,左边用...75的补码是0100 1011,0100 1011 >> 1 = 0010 0101, 然后0100 1011 | 0010 0101 = 0110 1111,然后再把 0110 1111无符号右移两,...至此,我们可以发现操作就是把最高位及其以下的位数都变为1 ,后面进行到16是因为int为32,所以到16的时候,所有的位数都遍历完了,最后的i - (i >>> 1)是返回i对应的二进制最高位数的整数

41430

JDK1.8JDK1.8集合源码阅读——IdentityHashMap

IdentityHashMap的结构与HashMap等不同,其实就是一个Object[]数组,数组的前一存放Key,后面一个位置就存放它对应的Value。...>>则是右移运算符,左边的用原有标志补充(负数为1,正数为0),比如说-3:1111 1101 >> 2 = 1111 1111(int 其实有32,这里偷懒,大家懂就行),而>>>是无符号右移,左边用...75的补码是0100 1011,0100 1011 >> 1 = 0010 0101, 然后0100 1011 | 0010 0101 = 0110 1111,然后再把 0110 1111无符号右移两,...至此,我们可以发现操作就是把最高位及其以下的位数都变为1 ,后面进行到16是因为int为32,所以到16的时候,所有的位数都遍历完了,最后的i - (i >>> 1)是返回i对应的二进制最高位数的整数

76390
领券