我想知道如何取一个数字(例如9),将其转换为32 int(00000000000000000000000000001001),然后反转每一位(11111111111111111111111111110110)。我知道如何通过替换字符串中的数字来做到这一点,但我需要知道如何使用二元运算符。我认为你必须使用它,"〜",但是当我在一个值上使用它时,它只给我一个负数。
答案 0 :(得分:2)
这是正确的功能。 C#中的int
数据类型使用有符号整数,因此11111111111111111111111111110110实际上是负数。
正如Marc指出的那样,如果您想使用无符号值,请将您的号码声明为uint
。
答案 1 :(得分:0)
如果查看数字的十进制版本,则为负数。 如果你将它声明为unsigned int,那么它就是一个正数。 但这没关系,二进制它总是11111111111111111111111111110110。 试试这个:
int number = 9;
Console.WriteLine(Convert.ToString(number, 2)); //Gives you 1001
number = ~number; //Invert all bits
Console.WriteLine(Convert.ToString(number, 2));
//Gives you your wanted result: 11111111111111111111111111110110