本文摘自PHP中文网,作者零下一度,侵删。
1.十进制 转 二进制 将十进制数不断地除2,将所有余数倒叙填写,即可得到所需二进制数据。
1 2 3 4 5 6 7 8 9 10 11 12 | public static string DecimalToBinary(int vDecimal)
{
List<int> vYuShu = new List<int>();
{int tempYS = vTempValue % 2;
vYuShu.Add(tempYS);
}
{
strBinary += vYuShu[i];
}
Console.WriteLine( "Input decimal value:{0}, output binary value:{1}." , vDecimal, strBinary); return strBinary;
}
|
2. 二进制 转 十进制
将二进制各位上的值(0或1)乘2的(n-1)次方,将每位结果相加。其中,n表示二进制中从右向左的位数(从1开始计);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public static int BinaryToDecimal(string vBinary)
{
{ var tempNum = vBinary[i].ToString(); if (tempNum == "0" )
{
vInput[i] = 0;
} else if (tempNum == "1" )
{
vInput[i] = 1;
} else { throw new Exception( "输入参数不正确,二进制数应仅由:0和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. 自带的转换方式
C#.Net自带的进制转换方式:
1 2 3 | int vDecimal = 99;
Console.WriteLine( "十进制数:{0},转换成二进制:{1}" , vDecimal, vBinary);
Console.WriteLine( "二进制数:{0},转换成十进制:{1}" , vBinary, tempDecimal);
|
4. 十进制 <=> 十六进制
1 2 3 | int vDecimal = 127;
Console.WriteLine( "十进制数:{0},转换成十六进制:{1}" , vDecimal, vStrHex);
Console.WriteLine( "十六进制数:{0},转换成十进制:{1}" , vStrHex, tempDecimal);
|
或者可以:
5. 十进制 <=> 八进制
6. 其它转换
7. 有符号的数 二进制转换
对于有正负号的数据,在转换时与上诉略有不同。
1个字节(8个bits)它不管怎么样还是只能表示256个数,因为有符号所以我们就把它表示成范围:-128 → 127。
用最高位表示符号位,0表示正数,1表示负数。
10000000在计算机中表示最小的负整数。从10000001到 11111111依次表示-127到-1。
负整数在计算机中是以补码形式储存的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | public static int BinaryToDecimalWithSign(string vBinary)
{
{ var tempNum = vBinary[i].ToString(); if (tempNum == "0" )
{
vInput[i] = 0;
} else if (tempNum == "1" )
{
vInput[i] = 1;
} else { throw new Exception( "输入参数不正确,二进制数应仅由:0和1组成" );
}
}
{
nInput[i] = vInput[0];
}
vInput.CopyTo(nInput, nLen - vInput.Length);
vInput = nInput;
}
{
{ if (vInput[vInput.Length - i] == 1)
{
vInput[vInput.Length - i] = 0; break ;
} else {
vInput[vInput.Length - i] = 1;
}
}
{
vInput[i] = 1 - vInput[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#串口通信的实例教程
c#中关于静态与非静态方法的区别介绍
c#简单工厂模式是什么?
c#如何连接加密数据库(sqlite)的示例分享
关于.net(c#)正确读取中文编码文件的实例教程
总结.net mvc实现长轮询实例
.net core如何在新的项目系统中(.csproj)发布可执行文件
c#连接ftp时路径出现问题的解决方法
.net多线程编程中的误用点分析
新手学习.net编程计划-1
更多相关阅读请进入《csharp》频道 >>
清华大学出版社
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。
转载请注明出处:木庄网络博客 » C# 中十进制与二进制、十六进制、八进制转换详解