您的位置:88bifa必发唯一官网 > 八八必发娱乐 > 即可得到所需二进制数据

即可得到所需二进制数据

发布时间:2019-08-20 08:44编辑:八八必发娱乐浏览(173)

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

    图片 1

     

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

     图片 2

     

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

    图片 3

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

    图片 4

      或者可以:

    图片 5

    5. 十进制 <=> 八进制

    图片 6

    6.  其它转换

    图片 7

     

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

    图片 8

     

    []

     

    十进制与二进制、十六进制、八进制之间的转换, 1.十进制 转 二进制 将十进制数不断地除2,将所有余数倒叙填写,即可得到所需二进制...

    本文由88bifa必发唯一官网发布于八八必发娱乐,转载请注明出处:即可得到所需二进制数据

    关键词: 八八必发娱乐

上一篇:一般来说Oracle的SQL执行语句

下一篇:没有了