Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Dezimal-zu-Binär-, Hexadezimal- und Oktalkonvertierung in C#
1. Dezimalzahl in Binärzahl umwandeln
Teilen Sie die Dezimalzahl fortlaufend durch 2 und tragen Sie alle Reste rückwärts ein, um die erforderlichen Binärdaten zu erhalten.
public static string DecimalToBinary(int vDecimal) {/* 将十进制的数 vDecimal 不断地除 2,取余数 * 然后将余数 倒序 填写 */List<int> vYuShu = new List<int>(); // 除 2 过程中产生的余数集int vTempValue= vDecimal; // 除 2 过程中产生的商数for (; ; ) {int tempYS = vTempValue % 2; vYuShu.Add(tempYS); // 记住余数vTempValue = vTempValue / 2;if (vTempValue == 0) // 商数等于0时,结束运算break; }// 倒序输出string strBinary = "";for (int i = vYuShu.Count - 1; i >= 0; i--) { strBinary += vYuShu[i]; } Console.WriteLine("Input decimal value:{0}, output binary value:{1}.", vDecimal, strBinary);return strBinary; }
2. Binär in Dezimal umwandeln
Multiplizieren Sie den Binärwert (0 oder 1) mit der Potenz von 2 (n-1) und jeweils Das Ergebnis wird addiert. Darunter stellt n die Anzahl der Ziffern von rechts nach links im Binärformat dar (gezählt von 1); >
public static int BinaryToDecimal(string vBinary) {// 首先判断是否满足输入要求int[] vInput = new int[vBinary.Length];for (int i = 0; i < vBinary.Length; i++) {var tempNum = vBinary[i].ToString();if (tempNum == "0") { vInput[i] = 0; }else if (tempNum == "1") { vInput[i] = 1; }else{throw new Exception("输入参数不正确,二进制数应仅由:0和1组成"); } }/* * 依次乘2的(n-1)次方,再求和 */int vDecimal = 0;for (int i = 1; i <= vInput.Length; i++) { vDecimal += (int)(Math.Pow(2, i - 1) * vInput[vInput.Length-i]); } Console.WriteLine("Input binary value:{0}, output decimal value:{1}.", vBinary, vDecimal);return vDecimal; }
3. Integrierte Konvertierungsmethode Integrierte Basiskonvertierungsmethode von C#.Net:
4. Dezimal <=> 🎜>
int vDecimal = 99;// 【10】 → 【2】string vBinary = Convert.ToString(vDecimal, 2); Console.WriteLine("十进制数:{0},转换成二进制:{1}", vDecimal, vBinary);// 【2】 → 【10】int tempDecimal = Convert.ToInt32(vBinary, 2); Console.WriteLine("二进制数:{0},转换成十进制:{1}", vBinary, tempDecimal);
5
int vDecimal = 127;// 【10】 → 【16】string vStrHex = "0x" + Convert.ToString(vDecimal, 16); Console.WriteLine("十进制数:{0},转换成十六进制:{1}", vDecimal, vStrHex);// 【16】 → 【10】int tempDecimal = Convert.ToInt32(vStrHex, 16); Console.WriteLine("十六进制数:{0},转换成十进制:{1}", vStrHex, tempDecimal);
6. Andere Konvertierungen
7. Vorzeichenbehaftete Binärkonvertierung
Für Daten mit positiven und negativen Vorzeichen gilt die Konvertierung etwas anders.
1 Byte (8 Bit) kann ohnehin nur 256 Zahlen darstellen. Da es vorzeichenbehaftet ist, drücken wir es als Bereich aus: -128 → 127.Verwenden Sie das höchste Bit, um das Vorzeichenbit darzustellen, 0 steht für eine positive Zahl und 1 steht für eine negative Zahl.
10000000 stellt die kleinste negative Ganzzahl im Computer dar. Von 10000001 bis 11111111 bedeutet dies -127 bis -1.
Negative ganze Zahlen werden in Computern im Zweierkomplement gespeichert.
[]
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Dezimal-zu-Binär-, Hexadezimal- und Oktalkonvertierung in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!