gpt4 book ai didi

c# - 字节类型的负值

转载 作者:行者123 更新时间:2023-11-30 14:34:34 30 4
gpt4 key购买 nike

我刚开始在 C# 上苦苦挣扎,我有一个问题。

在下面的代码中:

byte var = 0;
Console.WriteLine("{0}", ~var);

为什么打印-1?来自 http://www.csharp-station.com/Tutorial/CSharp/Lesson02我读到字节范围是从 0 到 255,~(00000000)_2 给出 (11111111)_2 等于 (255)_10。

最佳答案

您正在打印的值不是 byte 类型。它是 int 类型。

~(按位非)运算符不是为 byte 定义的,而是为 int 定义的。您的代码具有到 int 的隐式扩展转换。您的代码大致等同于使用显式强制转换的此版本:

int temp = ~((int)var);
Console.WriteLine("{0}", temp);

按位非运算符反转位以给出结果 111....111(基数 2)。这在 two's complement 中的值为 -1代表。


如果您希望结果是一个值为 255 的字节,您必须添加一个显式转换:

byte x = 0;
byte result = (byte)~x;

关于c# - 字节类型的负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13856581/

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