Questions tagged [32-bit]

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.

Filter by
Sorted by
Tagged with
0 投票
4 回答
2272 浏览

找出当前平台上最大的原生整数类型

我遇到的问题是创建一种大整数库。我想让它既跨平台又尽可能快。这意味着我应该尝试使用系统本机支持的大数据类型进行数学运算。

我实际上并不想知道我是为 32 位还是 64 位系统编译;我所需要的只是一种根据可用的最大值创建 64 位或 32 位或任何位整数的方法。我将使用 sizeof 来表现不同,具体取决于那是什么。

以下是一些可能的解决方案及其问题:

使用 sizeof(void*):这给出了指向内存的指针的大小。系统有可能(尽管不太可能)具有比它能够进行数学运算更大的指向内存的指针,反之亦然。

始终使用 long:虽然在多个平台上,长整数确实是 4 字节或 8 字节,具体取决于体系结构(我的系统就是这样一个例子),但即使在 64 位系统上,一些编译器也将长整数实现为 4 字节。

始终使用 long long:在许多 32 位系统上,这是一个 64 位整数,它可能效率不高(尽管可能比我编写的任何代码都更有效)。真正的问题是,某些架构可能根本不支持它(例如为我的 mp3 播放器供电的架构)。

需要强调的是,我的代码不关心整数的实际大小,一旦它被选择(它依赖于 sizeof() 来处理大小重要的任何事情)。我只希望它选择能使我的代码最有效的整数类型。

0 投票
5 回答
241 浏览

如果不使用 4GB RAM 中的 800MB,如何更好地利用编码平台?

我的编码平台是一台具有 4GB RAM 的 Vista 机器。虽然机器很光滑,但我知道有 800MB 的 RAM 根本没有使用。(仅使用了大约 3.2GB 或 4GB)。

我可以安装一些东西来帮助我的平台进行编码吗?我认为五笔将无法使用那些RAM,但VMware或VirtualPC可能会?或者一个 RAM 磁盘,以便下载和安装带有大文件的工具可以更快地解压缩?(例如解压缩 Ruby 安装文件,这似乎是 17,000 个文件要解压缩 - 可能夸大了)

0 投票
1 回答
620 浏览

带有 C# 的 64 位解决方案 ASP.NET 和一个 C++ 中的 32 位项目

我正在尝试使用 IIS (Windows Server 2012 x64) 项目,该项目有一个 ASP.NET Web 应用程序 x64,其中一个项目是 C++ 的 32 位和 64 位。我试图替换 C++ 项目 DLL 的 32 位和 64 位。我也尝试了很多配置:在 Visual Studio 中打开和关闭“首选 32 位”,将 AnyCPU(适用于所有项目)更改为 64 位,在 IIS 中打开和关闭“启用 32 位应用程序”。问题是 IIS 看不到 C++ 项目 DLL(应该可以看到,它在同一个文件夹中)或者由于格式不正确而无法加载。我想在最终的 32 位 C++ 项目中以 64 位运行整个解决方案,因此将所有内容更改为 32 位将不是正确的解决方案。有没有办法把所有东西都放在 IIS 上来运行应用程序?

0 投票
1 回答
1636 浏览

一个 32 位散列与两个 16 位散列之间是否存在冲突率差异?

我正在研究一个哈希冲突会成为问题的系统。本质上,有一个系统引用哈希表+树结构中的项目。然而,所讨论的系统首先将包含结构中路径的文本文件编译成包含散列值的二进制文件。这样做是出于性能原因。然而,由于这种冲突非常糟糕,因为该结构不能存储具有相同哈希值的 2 个项目;要求物品的部分没有足够的信息来知道它需要哪一个。

我最初的想法是,使用 2 种不同算法或两次使用相同算法的 2 次哈希使用 2 种盐会更耐碰撞。对于不同的散列算法,两个项目具有相同的散列是不太可能的。

出于空间原因,我希望将哈希值保持为 32 位,所以我想我可以切换到使用两种 16 位算法而不是一种 32 位算法。但这不会增加可能的哈希值的范围......

我知道切换到两个 32 位哈希会更耐冲突,但我想知道切换到 2 个 16 位哈希是否至少比单个 32 位哈希有一些收益?我不是最喜欢数学的人,所以我什至不知道如何开始检查答案,除了强加它......

系统的一些背景:

项目由人类命名,它们不是随机字符串,通常由单词、字母和数字组成,没有空格。它是一个嵌套的哈希结构,所以如果你有类似 { a => { b => { c => 'blah' }}} 的东西,你会通过获取 a/b/c 的值来获得值 'blah',编译后的请求将是立即序列中的 3 个哈希值,a、b 和 c 的哈希值。

只有在给定级别发生碰撞时才会出现问题。顶层项目和较低层项目之间的冲突是正常的。你可以有 { a => {a => {...}}},几乎可以保证不同级别的碰撞(不是问题)。

实际上,任何给定级别的哈希值都可能少于 100 个,并且在同一级别上没有一个是重复的。

为了测试我采用的散列算法(忘记是哪个,但我没有发明它)我下载了整个 CPAN Perl 模块列表,将所有命名空间/模块拆分为唯一的单词,最后对每一个进行散列搜索以查找冲突,我遇到了 0碰撞。这意味着该算法对于 CPAN 命名空间列表中的每个唯一单词都有不同的哈希值(或者我做错了)。这对我来说似乎已经足够好了,但它仍然在我的脑海中挥之不去。

0 投票
5 回答
17112 浏览

32 位 Intel 处理器上的内存对齐

Intel 的 32 位处理器(例如 Pentium)具有 64 位宽的数据总线,因此每次访问获取 8 个字节。基于此,我假设这些处理器在地址总线上发出的物理地址始终是 8 的倍数。

首先,这个结论正确吗?

其次,如果它是正确的,那么应该在 8 字节边界上对齐数据结构成员。但是我看到人们在这些处理器上使用 4 字节对齐。

他们怎么能有理由这样做呢?

0 投票
1 回答
673 浏览

如何使用本机 Windows API 从 32 位应用程序在 64 位视图中创建注册表项

当谈到 Windows API 时,我是个菜鸟。

我尝试使用 32 位应用程序在注册表的 64 位视图中创建一个注册表项

(这是 nsis 脚本),但它似乎不起作用。

0 投票
1 回答
2067 浏览

VB.Net 编译为使用 SQLite 在 64 位机器上运行的 32 位

情况是这样的——我有一个使用 2 个 dll 为 X86 机器编译的 vb.net exe……因为其中一个 dll 仅以 32 位提供,而且我不想处理 32/64 版本,所以我在编译选项中强制 32 位,一切都很好。现在我有一个 64 位工作站,它抛出一个关于 sqlite.dll 的错误(下面的错误 #1)......在阅读之后,我开始了解很多人都遇到了这个问题。我尝试用 64 位版本的 sqlite 替换客户端计算机上的 dll,但没有成功(错误 #2)。我在某处读到 64 位版本需要 VC 2010 重新发行版,但这不起作用。我无法将此应用程序编译为 64 位,因为其他 dll 是 32 位。任何帮助是极大的赞赏。

错误 #1 - System.InvalidOperationException:没有与此命令关联的连接

错误 #2 - System.BadImageFormatException: 无法加载文件或程序集 'System.Data.SQLite, Version=1.0.79.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' 或其依赖项之一。试图加载格式不正确的程序。文件名:'System.Data.SQLite,版本=1.0.79.0,Culture=neutral,PublicKeyToken=db937bc2d44ff139'

0 投票
2 回答
2055 浏览

MSBuild 项目有什么方法可以确定是 32 位还是 64 位版本的 MSBuild 正在运行?

在找到关于 64 位版本的 MSBuild 尝试加载 32 位扩展的问题的答案后,我现在有必要确定是 64 位版本还是 32 位版本的 MSBuild 正在运行,以便我可以加载正确版本的 DLL。

我可以对照已知路径列表检查 $(MSBuildBinPath) 变量,但如果 MSBuild 从某个非标准位置运行,这将不起作用。这不是一个优雅的解决方案。

是否有某种方法可以可靠地确定当前运行的 MSBuild(或托管 MSBuild 引擎的其他进程)是 32 位还是 64 位?

0 投票
2 回答
2204 浏览

C++ 读取带符号的 32 位整数值

我有一个名为 s32 的多字节原始类型,我想从字节数组中读取它。

规格如下:

  • 它是一个 32 位有符号整数值,以 little-endian 顺序存储。

  • 负整数使用 2 的补码表示。

  • 它根据大小使用 1 到 5 个字节。每个字节将其低七位贡献给该值。如果设置了高(第 8 位)位,则下一个字节也是值的一部分。

  • 应用符号扩展:传播编码的最后一个字节的第七位以填充解码值的 32 位。

在 U32 的情况下 - 无符号 32 位我想出了这个(欢迎任何评论!)但不确定如何为 S32 修改它。

谢谢大家!

0 投票
3 回答
7342 浏览

在 Debian 64 位上编译和链接 32 位应用程序

我目前正在尝试在我的 Debian 64 位上编译和链接一个 32 位应用程序,但它在链接时失败。

我正在使用(在我的 Makefile 中)编译的命令是:

这似乎有效。

然后我链接以下命令:

这失败并给出以下错误:

到目前为止我尝试过的(我在网络上其他地方找到的常用解决方案)是:

  • 安装gcc-multilib
  • 安装lib32ncurses5lib32ncurses6dev
  • 将选项添加-L/usr/lib32到链接命令

可悲的是,到目前为止,这些都没有奏效。我的想法不多了。我最后的手段是使用 32 位系统,但如果可能的话,我想避免这种情况。


15 30 50 per page
1
2 3 4 5
1498226