gpt4 book ai didi

c# - 将 int 转换为 short 会产生意想不到的结果

转载 作者:IT王子 更新时间:2023-10-29 04:40:05 25 4
gpt4 key购买 nike

我对 C# 中数字类型的丢失信息有点困惑。

当我这样做时:

int x = 32780;
short y = (short)x;

我的结果是:y 为 -32756 而不是预期的 32767。为什么?这是如何计算的?

短的范围:-32768 到 32767int 范围:-2,147,483,648 到 2,147,483,647

最佳答案

您似乎期待的是“向下舍入”效果,而不是实际发生的情况,这是对数据的按位重新解释。

在二进制中,x 等于 00000000000000001000000000001100,这是一个只有 16 位有效位的 32 位数字。 short 是一个 16 位 signed 整数,用 two’s complement notation 表示.

转换时,x 的最后 16 位被复制到 y 中,得到 1000000000001100。重要的是,第一个数字是 1。在补码表示法中,这是 -32756。您的数字没有四舍五入——它被读取为好像是 16 位的。

关于c# - 将 int 转换为 short 会产生意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11847791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com