![]() |
1
20
编译器将合成使用多个CPU指令执行该操作的数学操作(或使用函数调用)。例如,添加操作将添加
所以下面的C代码:
可能由如下所示的指令序列表示:
如果考虑一下,8位和16位系统的编译器必须在很久以前对16位和/或32位值执行这种类型的操作。
|
![]() |
2
9
在内部,类型由一个高位字和一个低位字表示,例如:
编译器需要知道它是32位还是64位的环境,然后选择数字的正确代表——如果它是64位,则可以在本机上执行,如果它是32位,则编译器必须处理高/低字之间的数学运算。 如果你看一下math.h,你可以看到用于这个的函数,并自己使用它们。另外,要注意小尾数和大尾数的区别。( see wiki )的使用取决于操作系统。 |
![]() |
3
2
说体系结构是32位(或64位)通常只是处理器能力的近似值。通常只引用具有该数字的指针宽度,算术可能会有很大的不同。例如,x86体系结构有32位指针,大多数算法在32位寄存器中执行,但它也有一些基本的64位操作的本机支持。 另外,您不应该认为标准整数类型有一些指定的宽度。特别是,long long至少是64位,但可能更宽。如果您想方便地确定宽度,请使用typedefs int32_t、int64_t。 如果您想知道gcc(或任何其他编译器)在长时间内做了什么,您必须研究特定目标平台的规范。 |
![]() |
4
2
如果您有一个32位的系统可以访问,那么只需编译和测试就足够容易了。海湾合作委员会有一面旗帜
|
![]() |
5
1
很可能是一个类,而不是本地的。同样,任何编译器都可以/可以支持任何大的数字集。 |
![]() |
MaPo · Linux,设置锁定ICMP_过滤器选项 5 月前 |
![]() |
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 5 月前 |
![]() |
Bobby · 复合字面值总是左值吗? 5 月前 |
![]() |
9-Pin · C: 嵌套结构的堆栈内存分配 5 月前 |