32 位中的 27 最多可以取多少
What is the max number that you can take by 27 in 32 bits
我正在编写代码,将数字乘以 1 到 27。我需要做一个故障安全,没有数字可以超过这个。四舍五入到 2^32/2^64 是行不通的。它需要 32 位,所以它可以同时支持 32 位和 64 位 OS。
如果您想将 3 乘以 5,但知道最大允许结果是 10,您可以很容易地判断出 3 太大,因为 3 > 10/5。仅此而已:)
既然你坚持使用32位类型,我假设你的编程语言是C,那么int32_t
可以表示的最大值是INT32_MAX
- 这两个来自#include <stdint.h>
.
但是您关于仅限于 32 位类型的假设可能是错误的:int64_t
适用于大多数(如果不是全部)主要 32 位平台:)
(2^32/27-1)
不会给你正确的上限值。作为整数,它是 159072861,这太小了。
32位可以存储的最大整数值是2^32 - 1
,计算结果为4294967295。
所以最大值实际上是(2^32 - 1) // 27
也就是159072862.
请注意整数除法的使用,我假设这就是您想要的。
我正在编写代码,将数字乘以 1 到 27。我需要做一个故障安全,没有数字可以超过这个。四舍五入到 2^32/2^64 是行不通的。它需要 32 位,所以它可以同时支持 32 位和 64 位 OS。
如果您想将 3 乘以 5,但知道最大允许结果是 10,您可以很容易地判断出 3 太大,因为 3 > 10/5。仅此而已:)
既然你坚持使用32位类型,我假设你的编程语言是C,那么int32_t
可以表示的最大值是INT32_MAX
- 这两个来自#include <stdint.h>
.
但是您关于仅限于 32 位类型的假设可能是错误的:int64_t
适用于大多数(如果不是全部)主要 32 位平台:)
(2^32/27-1)
不会给你正确的上限值。作为整数,它是 159072861,这太小了。
32位可以存储的最大整数值是2^32 - 1
,计算结果为4294967295。
所以最大值实际上是(2^32 - 1) // 27
也就是159072862.
请注意整数除法的使用,我假设这就是您想要的。