[英]Inverting all 32 bits in a number using binary operators in c#
我想知道如何獲取一個數字(例如9),將其轉換為32 int(00000000000000000000000000001001),然后反轉或翻轉每個位(11111111111111111111111111111110110),以便零變為1,而零變為0。
我知道如何通過替換字符串中的數字來做到這一點,但是我需要知道如何使用二進制數上的二進制運算符來做到這一點。
我認為您必須使用此運算符“〜”,但是當我在值上使用它時,它只是給我一個負數。
那是在做正確的功能。 C#中的int
數據類型使用帶符號的整數,因此11111111111111111111111111111110110實際上是一個負數。
正如Marc所指出的那樣,如果要使用無符號值,請將您的數字聲明為uint
。
如果您查看數字的十進制版本,則其為負數。 如果將其聲明為unsigned int,則其為正數。 但這無關緊要,二進制將始終為11111111111111111111111111111110110。請嘗試以下操作:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.