标签: long-integer

Long.reverse(long)方法有什么用?

我在Long类中找到了一个方法

public static long reverse(long i) {..}

这种方法有什么用?

java api performance reverse long-integer

8
推荐指数
1
解决办法
1418
查看次数

"长x = 1/2"是等于1还是0,为什么?

如果我有类似的东西:

long x = 1/2;
Run Code Online (Sandbox Code Playgroud)

这不应该四舍五入到1?当我在屏幕上打印时,它会说0.

c java integer-division long-integer

8
推荐指数
3
解决办法
8229
查看次数

如何在32位机器上完成64位数学运算?

如果32位处理器的长度确实只有32位,那么数学运算如何处理64位数?例如:

long lngTemp1 = 123456789123;
long lngTemp2 = lngTemp1 * 123;
Run Code Online (Sandbox Code Playgroud)

根据MSDN,C#中有一个长期签名的64位数字:http://msdn.microsoft.com/en-us/library/ctetwysk(VS.71).aspx

32位英特尔微处理器如何能够执行代码,如上所述而不会出现溢出?

c# types overflow long-integer

8
推荐指数
1
解决办法
2215
查看次数

无符号长位移位

我有位移和无符号长的问题.这是我的测试代码:

char header[4];
header[0] = 0x80;
header[1] = 0x00;
header[2] = 0x00;
header[3] = 0x00;

unsigned long l1 = 0x80000000UL;
unsigned long l2 = ((unsigned long) header[0] << 24) + ((unsigned long) header[1] << 16) + ((unsigned long) header[2] << 8) + (unsigned long) header[3];

cout << l1 << endl;
cout << l2 << endl;
Run Code Online (Sandbox Code Playgroud)

我希望l2也有2147483648的值,但它打印18446744071562067968.我假设第一个字节的位移会导致问题?

希望有人可以解释为什么这会失败以及我如何修改l2的计算以便它返回正确的值.

提前致谢.

c++ unsigned long-integer

8
推荐指数
1
解决办法
4243
查看次数

比较java中的两个原始长变量

标题非常明显.我正在从C#转向Java.我有一个对象和一个返回其ID的getter方法.我想比较两个相同类型的对象的ID,并检查它们的id值是否相等.

尝试:

obj.getId() == obj1.getId();
Run Code Online (Sandbox Code Playgroud)
Long id1 = obj.getId();
Long id2 = obj1.getId();

assertTrue(id1.equals(id2))
Run Code Online (Sandbox Code Playgroud)
assertTrue(id1== id2)
Run Code Online (Sandbox Code Playgroud)

java compare long-integer

8
推荐指数
2
解决办法
3万
查看次数

用于Windows和Linux的C++中64位整数的跨平台定义

我正在尝试用C++ for Windows(MinGW)和Linux(g ++)编写跨平台代码.我习惯在Linux中将64位整数定义为"long",但当我移动到MinGW时,sizeof(long)返回4个字节.然后我发现我可以使用"long long"或"__INT64"在MinGW中定义64位整数.我有两个问题:

1.-为Windows和Linux定义64位整数的最便携方式是什么?我目前正在使用#ifdef,但我不知道这是否是最好的方法:

#ifdef LINUX
    #define INT64 long 
#elif WIN32
    #define INT64 long long
#endif
Run Code Online (Sandbox Code Playgroud)

2.- 我应该在MinGW中使用"long long"还是"__INT64"?为什么?

c++ cross-platform mingw int64 long-integer

8
推荐指数
1
解决办法
6416
查看次数

在java中为long数据类型赋值

long val = 5000000000;
Run Code Online (Sandbox Code Playgroud)

此分配期间的错误是"类型int的文字5000000000超出范围".为什么编译器默认假定文字是int?

java long-integer

8
推荐指数
2
解决办法
3万
查看次数

64位浮点文字PHP

我试图在PHP中将64位浮点数转换为64位整数(并返回).我需要保留字节,所以我正在使用pack和unpack函数.我正在寻找的功能基本上是Java的Double.doubleToLongBits()方法.http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#doubleToLongBits(double)

我设法得到这个远远的帮助来自php docs for pack()的评论:

function encode($int) {
        $int = round($int);

        $left = 0xffffffff00000000;
        $right = 0x00000000ffffffff;

        $l = ($int & $left) >>32;
        $r = $int & $right;

        return unpack('d', pack('NN', $l, $r))[1];
}
function decode($float) {
        $set = unpack('N2', pack('d', $float));
        return $set[1] << 32 | $set[2];
}
Run Code Online (Sandbox Code Playgroud)

这很好用,大部分......

echo decode(encode(10000000000000));
Run Code Online (Sandbox Code Playgroud)

亿

echo encode(10000000000000);
Run Code Online (Sandbox Code Playgroud)

1.1710299640683E-305

但是这里变得棘手......

echo decode(1.1710299640683E-305);
Run Code Online (Sandbox Code Playgroud)

-6629571225977708544

我不知道这里有什么问题.亲自试试:http://pastebin.com/zWKC97Z7

你需要在Linux上使用64位PHP.该网站似乎模拟了该设置:http://www.compileonline.com/execute_php_online.php

php literals double-precision pack long-integer

8
推荐指数
1
解决办法
1027
查看次数

Intellij long"整数值太大"但在long.maxvalue范围内

整数错误太大

这可能是一个愚蠢的事情,但编译器如何才能显示这一点Long.Max = 9223372036854775807

javac intellij-idea long-integer

8
推荐指数
3
解决办法
2316
查看次数

(a*b)/ c MulDiv并处理中间乘法的溢出

我需要做以下算术:

long a,b,c;
long result = a*b/c;
Run Code Online (Sandbox Code Playgroud)

虽然结果保证适合long,但乘法不是,所以它可以溢出.

我试图一步一步地进行(首先乘法再划分),同时通过将中间结果拆分a*b为最大4的大小的int数组来处理溢出(就像BigInteger使用其int[] mag变量一样).

在这里,我被这个部门困住了.我无法理解进行精确划分所需的按位变换.我需要的只是商(不需要余数).

假设的方法是:

public static long divide(int[] dividend, long divisor)
Run Code Online (Sandbox Code Playgroud)

此外,我不考虑使用,BigInteger因为代码的这部分需要快速(我想坚持使用原语和原始数组).

任何帮助将非常感激!

编辑:我不是要BigInteger自己实现整个.我想要做的是比使用泛型更快地解决特定问题(a*b/c哪里a*b可以溢出)BigInteger.

编辑2:如果它可以以一种聪明的方式完成,完全没有溢出,注释中出现了一些提示,那将是理想的,但我仍在寻找一个正确的方法.

更新: 我尝试将BigInteger代码移植到我的特定需求,没有创建对象,并且在第一次迭代中,与使用BigInteger(在我的开发PC上)相比,我的速度提高了约46%.

然后我尝试了一下修改@大卫Eisenstat的解决方案,这给了我〜56%(我跑100_000_000_000随机输入来自Long.MIN_VALUELong.MAX_VALUE减少)运行的时间(超过2倍)比较的BigInteger(即〜18%相比,我的适应BigInteger的算法中) .

优化和测试会有更多的迭代,但在这一点上,我认为我必须接受这个答案是最好的.

java algorithm division long-integer

8
推荐指数
1
解决办法
345
查看次数