|
|
1
9
可疑: 在C中,您可以执行以下操作,这可能是不安全的(由于严格的别名规则):
它依赖于这样的假设
不那么可疑: 更安全,但更冗长的是:
这仍然依赖于匹配的数据类型大小。但是,以上两种方法都假设您正在使用的库的内部将 没有什么 所有的数据。例如,它不会对NaN或/-infinity等有任何特殊处理。 安全: 按照完全不同的思路,如果您愿意在每个int中浪费两个float,您可以执行以下操作:
最后一个是安全的(除了对浮点和整数大小的一些非常合理的假设)。 |
|
2
4
尾数字段允许您存储23位。指数字段允许您存储 差不多8位 ,它宽8位,保留了一些值。还有一点迹象。 避免指数中的保留值,您仍然可以存储31位的选择。
你可能会发现
|
|
|
3
0
这里给出的所有答案都假定您只想使用为浮点存储保留的字节作为存储int的位置。它们不允许您对用浮点值编码的int执行算术。如果你想算数,你就得用24.99位(也就是说,范围是-(2^24-1)到(2^24-1);我认为符号位是0.99位,而不是1位,因为不能用float的符号/大小表示来存储可能的最低值)和一组稀疏的较大值(例如,256的任何32位整数倍数都可以用float表示)。 |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 11 月前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 11 月前 |
|
|
Bobby · 复合字面值总是左值吗? 11 月前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 11 月前 |