- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
众所周知,stdint.h
通过 int_leastN_t
和 int_fastN_t
为某些 N 位类型提供数据和代码经济变体, 分别。我想它是根据不同 CPU 的 word
大小来实现的。
话虽这么说,据我所知,64 位 CPU 处理 64 位数据的速度比更少的数据快,无论“更少”是什么。从逻辑上讲,64 位整数比 32 位整数快,当涉及到 64 位 CPU 时,尽可能快地使用 16 位数据,int_fast16_t
将具有 INT_FAST16_MIN
定义为 INT64_MIN
而不是 stdint.h
中指定的 INT32_MIN
。
对于 32 位 CPU,类似的情况是 int_fast8_t
,但问题是 char
是 正好 8 位,无论如何,所以不可能一个最低版本。
我知道当前的规范必须同时支持 64 位和 32 位处理器,但从理论上讲,从 64 位的角度来看,我的说法是否正确?
最佳答案
不,除了它们必须至少为 N
位宽这一明显要求之外,没有确定应如何定义 [u]int_fastN_t
的一般理论基础。
对于什么是“32 位”或“64 位”CPU,确实没有明确的定义。该数字可能指通用 CPU 寄存器的大小,或地址的大小,或某些内部总线的宽度,或市场部门的心血来潮。有许多 CPU 的“位数”是模糊的;一些 CPU 在某些方面是 8 位的,在其他方面是 16 位的,或者 16 位和 32 位。有关示例,请参阅 x86 和 68k CPU 系列的演变。
完全有可能拥有一个带有 64 位通用寄存器的 CPU,它还具有可以比 64 位运算更快地执行 32 位运算的指令。就此而言,64 位加法可能比 32 位加法快,32 位除法比 64 位除法快。
就个人而言,我很乐意让编译器和运行时库实现者操心,并以最合理的方式为目标架构定义[u]intfastN_t
类型。如果我需要知道运行时的实际大小,可以使用 sizeof
运算符。如果我在编写代码时需要知道实际大小,我可能一开始就不应该使用 [u]int_fastN_t
。
这是 C 标准对 [u]int_leastN_t
类型的描述(N1570 7.20.1.3:
Each of the following types designates an integer type that is usually fastest to operate with among all integer types that have at least the specified width.
The typedef name
int_fastN_t
designates the fastest signed integer type with a width of at leastN
. The typedef nameuint_fastN_t
designates the fastest unsigned integer type with a width of at leastN
.The following types are required:
int_fast8_t
uint_fast8_t
int_fast16_t
uint_fast16_t
int_fast32_t
uint_fast32_t
int_fast64_t
uint_fast64_t
All other types of this form are optional.
只有 C 标准提供了保证;除此之外的任何东西都是不可移植的。
关于c++ - 不同位数平台上 int_fastN_t 的正确位数是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26166218/
假设我得到了两个整数 a, b 其中 a 是一个正整数并且小于 b 。我必须找到一种有效的算法,它会在 [a, b] 区间内给出 base2 位数(位数)的总和。例如,在区间 [0, 4] 中,数字之
到目前为止我已经尝试过不同的 autofilter但非选项似乎对我有用,我有许可证号列,其中应该只有 10 位数字,并且 autofilter我正在尝试查找少于或多于 10 位数字的条目, 我将该列转
谁能告诉我检查输入的数字是否为 3 位数字的正则表达式...它也不应该允许字母.... 最佳答案 3 个数字的正则表达式为 ^[0-9]{3}$ 或 ^\d{3}$ 关于javascript - 是否
我不知道这在 SQL Server 中是否可行,但我得问问它 ;-) 我在表 work 中有一个名为 duty 的列。 假设 Work.Duty 包含不同的数字,例如 (1, 2, 3, 20, 22
我正在运行一个我创建的java程序,它存储用户输入的数据。具体来说,有 4 个数组列表,分别是songName、songArtist、songYear 和songAlbum。我有一个“songYear
我不知道这在 SQL Server 中是否可行,但我得问问它 ;-) 我在表 work 中有一个名为 duty 的列。 假设 Work.Duty 包含不同的数字,例如 (1, 2, 3, 20, 22
给定一个 float ,我想使用半偶数舍入将结果四舍五入到小数点后四位,即四舍五入到下一个偶数的方法。例如,当我有以下代码片段时: #include #include int main(){
有没有一种方法可以在不使用小程序的情况下确定客户端计算机上的 jvm 位数?我确实看到了这个link但这决定了 jvm 版本而不是位数。提前致谢 最佳答案 您可以尝试确定浏览器位数 - 32 位 ja
我正在编写一个程序来计算给定数字的两个二进制表示之间的共同位数。我写的代码是: int common_bits(int a, int b) { static long binaryNo1,binary
如何使表格中的每个单元格的最小宽度为 3 位数字并且不会更大?现在我正在对 min-width 进行硬编码,但我不喜欢对值进行硬编码,因为将来我可能想更改字体。如果需要 Javascript 也没关系
我正在尝试匹配后跟一个空格或制表符和 5 个数字的单词。例如 some noise text off 12345 some noise text again. 另一个例子是: Some noise t
我在从 double 到 string 的转换时遇到问题。 我要转换: double value: 0.0772486324655191 string value: 0.077248632465519
我正在尝试实现一个使用 128 位 key 的密码。 key 计划的一部分是将 key 向右旋转 29 位,但我不确定该怎么做,因为 Java 中没有单一数据类型可以保存整个 key 。我将它存储在两
我正在尝试在 AVX2 中对 128 位数进行左旋转。由于没有直接的方法,我尝试使用左移和右移来完成我的任务。 这是我执行相同操作的代码片段。 l = 4; r = 4
我有一个 int,它的值类似于 1235 和 12890。我只想要这个 int 的前 2 位数字。我怎样才能提取它? 想了半天,想不出什么办法。 最佳答案 减少数字,直到只剩下两位数: while (
TL:DR 我想要紧跟“+”符号的任何行上的前两个数字的语法。 给定以下文本(来自熟悉的实用程序): power_meter-acpi-0 Adapter: ACPI interface power1
因此根据 cplusplus.com,当您通过以下方式将输出流的格式标志设置为科学记数法时 of.setf(ios::scientific) 您应该在指数中看到 3 位加号和一个符号。但是,我的输出似
这个问题在这里已经有了答案: How can I pad a value with leading zeros? (77 个答案) 关闭 9 年前。 如果小时数小于 10 小时,则小时数通常以个位数
我正在使用 moment.js使用根据距离/速度计算的日期时间。我也在使用 moment duration format plugin .当我将值传递给 moment.duration 然后对其进行格
我正在将一个应用程序从 .NET 移植到 Mono 运行时,并且在代码中的某个位置我可以看到一个 float 具有值 158136.422。我对 float 的理解是它是 7 位精度,那么这个数字如何
我是一名优秀的程序员,十分优秀!