中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C# 中十進制與二進制、十六進制、八進制轉換的示例分析

發布時間:2021-01-27 10:36:02 來源:億速云 閱讀:288 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關C# 中十進制與二進制、十六進制、八進制轉換的示例分析的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1.十進制 轉 二進制

將十進制數不斷地除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;
        }

C# 中十進制與二進制、十六進制、八進制轉換的示例分析

2. 二進制 轉 十進制

將二進制各位上的值(0或1)乘2的(n-1)次方,將每位結果相加。其中,n表示二進制中從右向左的位數(從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;
        }

C# 中十進制與二進制、十六進制、八進制轉換的示例分析

3. 自帶的轉換方式

C#.Net自帶的進制轉換方式:

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

C# 中十進制與二進制、十六進制、八進制轉換的示例分析

4. 十進制  <=>  十六進制

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

C# 中十進制與二進制、十六進制、八進制轉換的示例分析

或者可以:

C# 中十進制與二進制、十六進制、八進制轉換的示例分析

5. 十進制 <=> 八進制

C# 中十進制與二進制、十六進制、八進制轉換的示例分析

6.  其它轉換

C# 中十進制與二進制、十六進制、八進制轉換的示例分析

7. 有符號的數 二進制轉換

對于有正負號的數據,在轉換時與上訴略有不同。

 1個字節(8個bits)它不管怎么樣還是只能表示256個數,因為有符號所以我們就把它表示成范圍:-128 → 127。

 用最高位表示符號位,0表示正數,1表示負數。

 10000000在計算機中表示最小的負整數。從10000001到 11111111依次表示-127到-1。

 負整數在計算機中是以補碼形式儲存的。

        public static int BinaryToDecimalWithSign(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組成");
                }
            }// -------- 不足8bits,補足 --------(非必需)if (vInput.Length % 8 != 0) // 補足8b、16b、、、            {int nLen = (vInput.Length / 8 + 1) * 8;int[] nInput = new int[nLen];for (int i = 0; i < nLen - vInput.Length; i++)
                {
                    nInput[i] = vInput[0];
                }
                vInput.CopyTo(nInput, nLen - vInput.Length);

                vInput = nInput;
            }// ---------------------------------// 第1步:首位為1,則為負值int vFH = vInput[0];if (vFH == 1)
            {// ---------- 第2步:減去一 ----------for (int i = 1; i <= vInput.Length; i++)
                {if (vInput[vInput.Length - i] == 1)
                    {
                        vInput[vInput.Length - i] = 0;break;
                    }else{
                        vInput[vInput.Length - i] = 1;
                    }
                }// ---------- 第3步:取反 ----------for (int i = 0; i < vInput.Length; i++)
                {
                    vInput[i] = 1 - vInput[i];
                }
            }// ---------- 第4步:轉成10進制數 ----------int vDecimal = 0;for (int i = 1; i <= vInput.Length; i++)
            {
                vDecimal += (int)(Math.Pow(2, i - 1) * vInput[vInput.Length - i]);
            }if (vFH == 1) // 為負數            {
                vDecimal = 0 - vDecimal;
            }

            Console.WriteLine("Input binary value:{0}, output decimal value:{1}.", vBinary, vDecimal);return vDecimal;
        }

C# 中十進制與二進制、十六進制、八進制轉換的示例分析

感謝各位的閱讀!關于“C# 中十進制與二進制、十六進制、八進制轉換的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

无锡市| 洞头县| 简阳市| 奉化市| 岑溪市| 怀集县| 青田县| 稷山县| 洮南市| 鹿邑县| 宁德市| 海安县| 保靖县| 阿巴嘎旗| 察隅县| 马鞍山市| 富民县| 乌拉特前旗| 克东县| 永康市| 大竹县| 曲周县| 东乌珠穆沁旗| 宁晋县| 颍上县| 汝州市| 钟祥市| 大姚县| 江北区| 高陵县| 桃江县| 武平县| 龙岩市| 花莲市| 屏东市| 荣昌县| 宝山区| 灵武市| 开阳县| 陈巴尔虎旗| 五家渠市|