ホームページ  >  記事  >  バックエンド開発  >  C# での 10 進数から 2 進数、16 進数、8 進数への変換の詳細な説明

C# での 10 進数から 2 進数、16 進数、8 進数への変換の詳細な説明

零下一度
零下一度オリジナル
2017-06-23 15:19:138570ブラウズ

1. 10 進数を 2 進数に変換します

10 進数を 2 で割り、余りをすべて逆に埋めて、必要なバイナリ データを取得します。

        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. 2 の (n-1) 乗を掛けて加算します。それぞれの結果をまとめます。このうち、n は 2 進数で右から左の桁数を表します (1 から数えます)。

3. Net 組み込みの基数変換メソッド:

        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;
        }

4. 10 進数 <=> 16 進数

            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. 10 進数<=> 8 進数

6. その他の変換

プラスとマイナスの符号がある場合のデータは、変換されますが、アピールとは若干異なります。

1 バイト (8 ビット) はとにかく 256 個の数値しか表現できません。符号付きなので、-128 → 127 の範囲で表します。

最上位ビットを使用して符号ビットを表し、0 は正の数を表し、1 は負の数を表します。

10000000 は、コンピューターにおける最小の負の整数を表します。 10000001 から 11111111 までは、-127 から -1 を意味します。

コンピューターでは、負の整数は 2 の補数形式で格納されます。

りー

[]

以上がC# での 10 進数から 2 進数、16 進数、8 進数への変換の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。