c - 通过位操作获取 INT_MAX

标签 c bitwise-operators

如何在 C 语言中仅使用按位运算符获取 INT_MAX 的值?我希望 ~01111111111(1 的补码,所以十进制 -1)和 ~ 0 >> 10111111111,这将是最大值,但它仍然是 -1

为什么会这样,如何使用位运算获取 INT_MAX 的值?

最佳答案

尝试 ~0UL >> 1。问题是,如果 C 正在处理带符号的类型,它将进行符号扩展右移。这就是为什么你仍然得到负数的原因——因为它正在移动另一个 1 位以匹配那里的 1 位。 (这样 -8 >> 1 就可以得到 -4,因为您希望快速除以二。)

关于c - 通过位操作获取 INT_MAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9402386/

相关文章:

javascript - 想知道与 0 使用 OR 位运算的原因

java - Bitshift - 需要帮助来理解代码

c - 从动态指针数组中删除位置 - 字节丢失 - c

c - Eclipse:编译器定义和代码高亮显示

c - 我的字数统计程序出了什么问题?

不同数据类型的转换

c - 请告诉为什么下面程序的输出是 JKLM??而不是 MLKJ?

c++ - 使用 SSE 或 SSE3 在 ushort 数组中添加 uchar 值

c - C 中的数字加 1

数据库。需要像 and 这样的逻辑运算符