Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将long转换为两个int,反之亦然_Java_Int_Long Integer - Fatal编程技术网

Java 将long转换为两个int,反之亦然

Java 将long转换为两个int,反之亦然,java,int,long-integer,Java,Int,Long Integer,如何将两个32位整数(int)转换为一个64位长,反之亦然 从整数到长整数: long c = ((long)a << 32) | ((long)b & 0xFFFFFFFFL); longc=((long)alongc=(long)a>32); int-bBack=(int)c; 在Java中,您不需要太多的括号,也不需要任何反向计算的掩蔽。您希望以什么方式转换它们?一种可能性:(a是有符号的还是无符号的?如果没有符号,那么负值意味着什么?考虑到具体情况,我认为b的可能

如何将两个32位整数(
int
)转换为一个64位
,反之亦然

从整数到长整数:

long c = ((long)a << 32) | ((long)b & 0xFFFFFFFFL);
longc=((long)a
longc=(long)a>32);
int-bBack=(int)c;

在Java中,您不需要太多的括号,也不需要任何反向计算的掩蔽。

您希望以什么方式转换它们?一种可能性:(a是有符号的还是无符号的?如果没有符号,那么负值意味着什么?考虑到具体情况,我认为b的可能重复很可能已经被认为是有效的。这个答案是微妙的错误:对于
b=0x1ffffff
,它将失败,因为包含(截至此评论)面具中有七个Fs,而不是八个。这意味着它不仅对b的所有负值都不起作用(因为没有面具的答案会失败),而且对b的大正值也不起作用。承租人:
for(long i=long.MIN_值;I292年的时间远远少于它所需的时间。我的电脑也要求292年,其他人也是如此。对我来说
(停止-开始)*2.0/reps*Long.MAX_值)
为1.207154932183553E22,而Long.MAX值为9223372036854775807,因此当转换为
(Long)
时,每个人最终都会得到9223372036854775807。因为这是真实值的1/1308,所以时间实际上应该是382000年。(尽管实际答案正确,仍然是+1)哈哈,很好的Richard。我习惯于从不手动进行毫秒到其他东西的转换,但我也很少尝试在几百年(或几十万年)内获得毫秒分辨率。因为我不再是一名教师,我将编辑掉整个“练习”比特。答案不需要太长。如果大家都明白了,很抱歉。有人能解释一下吗。我理解第一部分,我们将腾出最后32比特。第二部分在做什么。1会给什么?我用((长)a(长)a尝试了这个
long c = (long)a << 32 | b & 0xFFFFFFFFL;
int aBack = (int)(c >> 32);
int bBack = (int)c;