首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么无穷大= 0x3f3f3f3f?

为什么无穷大= 0x3f3f3f3f?
EN

Stack Overflow用户
提问于 2013-08-25 20:33:43
回答 1查看 16.4K关注 0票数 28

在某些情况下,通常使用足够大的整数值来表示无穷大。我通常使用最大的可表示的正/负整数。这通常会产生更多的代码,因为您需要在几乎所有算术运算之前检查其中一个操作数是否为无穷大,以避免溢出。有时会希望有饱和的整数运算。出于这个原因,一些人使用更小的值来表示无穷大,这些值可以多次相加或相乘,而不会溢出。让我感兴趣的是,它非常常见(特别是在编程比赛中):

代码语言:javascript
复制
const int INF = 0x3f3f3f3f;

为什么这个数字很特别?它的二进制表示是:

代码语言:javascript
复制
00111111001111110011111100111111

我在这里看不到任何特别有趣的属性。我看到它很容易输入,但如果这是原因,几乎任何东西都可以(0x3e3e3e3e,0x2f2f2f2f,等等)。它可以添加一次而不会溢出,这允许:

代码语言:javascript
复制
a = min(INF, b + c);

但是,所有其他常量都可以。Googling只向我显示了大量使用该常量的代码片段,但没有解释或注释。

有人能发现它吗?

EN

回答 1

Stack Overflow用户

发布于 2013-08-25 20:53:01

ASCII码是字符串????0x3f3f3f3f表示形式。

Krugle在其整个数据库中找到了该常量的48个实例。其中46个实例位于Java项目中,在该项目中,它被用作某些图形操作的位掩码。

1项目是一个操作系统,用于表示未知的ACPI设备。

1项目也是Java图形的位掩码。

因此,在Krugle索引的所有项目中,它被使用了47次,因为它的位模式,一次是因为它的ASCII解释,而不是一次作为无穷大的表示。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18429021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档