gpt4 book ai didi

C# NOT (~) 按位运算符返回负值

转载 作者:太空狗 更新时间:2023-10-29 22:15:43 26 4
gpt4 key购买 nike

为什么 C# 的按位 NOT 运算符返回 (the_number*-1)-1

byte a = 1;
Console.WriteLine(~a); //equals -2
byte b = 9;
Console.WriteLine(~b); //equals -10
// Shouldn't a=0 and b=6?

我如何在 C# 中执行此操作?

9 = 0b1001 -> NOT
= 0b0110 = 6

最佳答案

按位运算返回类型为int(有符号)的值。有符号整数使用 two's-complement来表示负数。从 byte 到 int 时使用符号扩展。

byte a = 1; // 0b00000001
int notA = ~a; // 0b11111110 = -128 + 64 + 32 + 16 + 8 + 4 + 2 = -2 (actually 0b11111111 11111111 11111111 11111110)

byte b = 9; // 0b00001001
int notB = ~9; // 0b11110110 = -128 + 64 + 32 + 16 + 4 + 2 = -10 (actually 0b11111111 11111111 11111111 11110110)

转换回 byte 将为您提供 0b11110110

的“预期”结果
byte notB = unchecked((byte)(~b)); // 0b11110110 = 128 + 64 + 32 + 16 + 4 + 2
Console.WriteLine(notB); // 246

关于C# NOT (~) 按位运算符返回负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37881537/

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