问题标签 [int64]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
8934 浏览

c# - 在 C# 下,在 32 位处理器上使用 Int64 是危险的

我在 MS 文档中读到,在 32 位 Intel 计算机上分配 64 位值不是原子操作;也就是说,该操作不是线程安全的。这意味着如果两个人同时为一个静态Int64字段赋值,则无法预测该字段的最终值。

三部分问题:

  • 这是真的吗?
  • 这是我在现实世界中会担心的事情吗?
  • 如果我的应用程序是多线程的,我真的需要Int64用锁定代码包围我的所有任务吗?
0 投票
3 回答
76836 浏览

c# - 64 位 PC 上的 int.MaxValue 是什么?

这条线给了我答案,2,147,483,647因为我有一台 32 位 PC。

答案在 64 位 PC 上是否相同?

0 投票
9 回答
28431 浏览

c# - 在 C# 中生成随机值

如何使用RandomC# 中的类生成随机 Int64 和 UInt64 值?

0 投票
2 回答
700 浏览

.net - 为什么我的 .net Int64 的行为就像 Int32 一样?

我在 .net 程序中目睹了一种奇怪的行为:

为什么我的 Int64 的行为就好像它们是 Int32 的一样,尽管 Int64.MaxValue 似乎确认它们使用的是 64 位?

如果相关,我使用的是 32 位操作系统,并且目标平台设置为“任何 CPU”

0 投票
1 回答
3447 浏览

iphone - 将 int64 转换为 NSData

我需要将一个 long 值从 int64 转换为 NSData,以便稍后在其上运行哈希算法。我执行:

结果控制台输出是这样的:

6201314301187184 9000000000000000000

为什么 NSData 不能正确存储长数字的值?如果我在循环中运行它,则 NSData 字节会漂移,从 620 开始,然后是 621 等等。我是通过 [buffer bytes] 输出 longNumber 的地址而不是它的值吗?

0 投票
3 回答
1468 浏览

c# - 如何在 C# 中使用 int64 索引对数组的一部分进行排序?

.Net 框架有一个 Array.Sort 重载,它允许指定排序的开始和结束索引。然而,这些参数只有 32 位。因此,当描述排序范围的索引只能使用 64 位数字指定时,我看不到对大型数组的一部分进行排序的方法。我想我可以复制和修改框架的排序实现,但这并不理想。

更新:

我创建了两个类来帮助我解决这些和其他大型数组问题。另一个这样的问题是,早在我达到内存限制之前,我就开始出现 OutOfMemoryException。我假设这是因为请求的内存可能可用但不连续。为此,我创建了 BigArray 类,它是一个通用的、可动态调整大小的数组列表。它比框架的通用列表类具有更小的内存占用,并且不需要整个数组是连续的。我还没有测试过性能命中,但我确定它在那里。

回到最初的排序问题……我真正需要的是一种按顺序对数组的每个元素进行操作的方法。但是对于如此大的数组,复制数据、对其进行排序、对其进行操作然后丢弃已排序的副本(必须保持原始顺序)是令人望而却步的。因此,我创建了静态类 OrderedOperation,它允许您按排序顺序对未排序数组的每个元素执行任意操作。并以低内存占用(此处以内存换取执行时间)来执行此操作。

这两个类可以一起工作(这就是我使用它们的方式),但它们不是必须的。我希望其他人发现它们有用。但我承认,它们是边缘案例类。欢迎提问。如果我的代码很糟糕,我也想听听提示。

最后一个想法:正如您在 OrderedOperation 中看到的,我使用的是整数而不是长整数。目前这对我来说已经足够了,尽管我有最初的问题(应用程序在不断变化,以防你无法分辨)。但是,如果需要,该类也应该能够处理多头。

0 投票
2 回答
900 浏览

double - 双打除法不准确(Visual C++ 2008)

我有一些代码可以将 QueryPerformanceCounter 返回的时间值转换为以毫秒为单位的双精度值,因为这样计算起来更方便。

该函数如下所示:

我最近遇到的问题(我认为我之前没有遇到过这个问题,并且没有对代码进行任何更改)是结果不是很准确。结果不包含任何小数,但精确度甚至低于 1 毫秒。

当我在调试器中输入表达式时,结果与我预期的一样准确。

我知道双精度不能保持 64 位整数的精度,但此时,PerformanceCounter 只需要 46 位(双精度应该能够存储 52 位而不会丢失)此外,调试器使用似乎很奇怪用不同的格式来做除法。

这是我得到的一些结果。该程序在调试模式下编译,C++ 选项中的浮点模式设置为默认值(精确 (/fp:precise) )

有谁知道为什么调试器 Watch 中的精度与我的程序中的结果不同?

更新:在进行转换和除法之前,我尝试从 timerPerformanceCounter.QuadPart 中减去 30270310439445,现在它在所有情况下似乎都是准确的。也许我现在只看到这种行为的原因可能是因为我的计算机的正常运行时间现在是 16 天,所以值比我习惯的要大?所以这似乎是一个大数字的划分精度问题,但这仍然不能解释为什么在 Watch 窗口中划分仍然正确。它的结果是否使用比双精度更高的类型?

0 投票
1 回答
902 浏览

asp.net - 如何在 JavaScript 中序列化具有 Int64 类型的变量而不损失准确性?

如何在 JavaScript 中序列化具有 Int64 类型的变量而不损失准确性?我的开发平台是。网。

0 投票
2 回答
4909 浏览

active-directory - 如何将 System.DirectoryEntry“uSNChanged”属性值更改为 Int64

我正在尝试获取目录服务对象的“uSNChanged”值的 Int64 值。不幸的是,它总是作为某种 COM 对象返回。我尝试过使用转换为 Int64、调用 Int64.Parse() 和调用 Convert.ToInt64()。这些都不起作用。

对于给定的 DirectoryEntry 对象,此代码将显示属性:

这是输出:

如何将该 System.__ComObject 转换为 Int64?


使用的解决方案:

这是我根据以下marc_s的解决方案使用的解决方案:

0 投票
6 回答
48716 浏览

c++ - manipulating LARGE_INTEGERS

I am converting some code from C to C++ in MS dev studio under win32. In the old code I was doing some high speed timings using QueryPerformanceCounter() and did a few manipulations on the __int64 values obtained, in particular a minus and a divide. But now under C++ I am forced to use LARGE_INTEGER because that's what QueryPerformanceCounter() returns. But now on the lines where I try and do some simple maths on the values I get an error:

error C2676: binary '-' : 'LARGE_INTEGER' does not define this operator or a conversion to a type acceptable to the predefined operator

I tried to cast the variables to __int64 but then get:

error C2440: 'type cast' : cannot convert from 'LARGE_INTEGER' to '__int64'

How do I resolve this?

Thanks,