簡體   English   中英

使用C#中的二進制運算符將數字中的所有32位取反

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM