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 % ;
vYuShu.Add(tempYS); // 记住余数 vTempValue = vTempValue / ;
if (vTempValue == ) // 商数等于0时,结束运算
break;
}
// 倒序输出
string strBinary = "";
for (int i = vYuShu.Count - ; i >= ; i--)
{
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开始计);

        public static int BinaryToDecimal(string vBinary)
{
// 首先判断是否满足输入要求
int[] vInput = new int[vBinary.Length];
for (int i = ; i < vBinary.Length; i++)
{
var tempNum = vBinary[i].ToString();
if (tempNum == "")
{
vInput[i] = ;
}
else if (tempNum == "")
{
vInput[i] = ;
}
else
{
throw new Exception("输入参数不正确,二进制数应仅由:0和1组成");
}
}
/*
* 依次乘2的(n-1)次方,再求和
*/
int vDecimal = ;
for (int i = ; i <= vInput.Length; i++)
{
vDecimal += (int)(Math.Pow(, i - ) * vInput[vInput.Length-i]);
} Console.WriteLine("Input binary value:{0}, output decimal value:{1}.", vBinary, vDecimal); return vDecimal;
}

 

3. 自带的转换方式

C#.Net自带的进制转换方式:

            int vDecimal = ;
// 【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);

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

            int vDecimal = ;
// 【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);

或者可以:

5. 十进制 <=> 八进制

6.  其它转换

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 = ; i < vBinary.Length; i++)
{
var tempNum = vBinary[i].ToString();
if (tempNum == "")
{
vInput[i] = ;
}
else if (tempNum == "")
{
vInput[i] = ;
}
else
{
throw new Exception("输入参数不正确,二进制数应仅由:0和1组成");
}
}
// -------- 不足8bits,补足 --------(非必需)
if (vInput.Length % != ) // 补足8b、16b、、、
{
int nLen = (vInput.Length / + ) * ;
int[] nInput = new int[nLen];
for (int i = ; i < nLen - vInput.Length; i++)
{
nInput[i] = vInput[];
}
vInput.CopyTo(nInput, nLen - vInput.Length); vInput = nInput;
}
// --------------------------------- // 第1步:首位为1,则为负值
int vFH = vInput[];
if (vFH == )
{
// ---------- 第2步:减去一 ----------
for (int i = ; i <= vInput.Length; i++)
{
if (vInput[vInput.Length - i] == )
{
vInput[vInput.Length - i] = ;
break;
}
else
{
vInput[vInput.Length - i] = ;
}
} // ---------- 第3步:取反 ----------
for (int i = ; i < vInput.Length; i++)
{
vInput[i] = - vInput[i];
}
}
// ---------- 第4步:转成10进制数 ----------
int vDecimal = ;
for (int i = ; i <= vInput.Length; i++)
{
vDecimal += (int)(Math.Pow(, i - ) * vInput[vInput.Length - i]);
}
if (vFH == ) // 为负数
{
vDecimal = - vDecimal;
} Console.WriteLine("Input binary value:{0}, output decimal value:{1}.", vBinary, vDecimal); return vDecimal;
}

[http://www.cnblogs.com/CUIT-DX037/]

C# 十进制与二进制、十六进制、八进制之间的转换的更多相关文章

  1. PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载   中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...

  2. PHP函数十进制、二进制、八进制和十六进制转换

    PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明,主要掌握各进制转换的方法,以应用于实际开发. 一,十进制(decimal system)转换函数说明 1,十进制转二进制 decbin ...

  3. PHP:第一章——PHP中十进制、二进制、八进制、十六进制转换

    //十进制.二进制.八进制.十六进制转换 //十进制转换为二进制decbin()函数: //echo decbin(5);//输出:101 //十进制转换为八进制decoct()函数 //echo d ...

  4. PHP函数十进制、二进制、八进制和十六进制转换函数说明

    1.十进制转二进制 decbin() 函数,如下实例  echo decbin(12); //输出 1100 echo decbin(26); //输出 11010 2.十进制转八进制 decoct( ...

  5. C++进制转换(十进制转二进制、八进制、随意进制)

    十进制转二进制: //十进制转二进制 #include<iostream> using namespace std; void printbinary(const unsigned int ...

  6. c#二进制、十进制、16进制之间的转换

    //十进制转二进制 Console.WriteLine(Convert.ToString(69, 2)); //十进制转八进制 Console.WriteLine(Convert.ToString(6 ...

  7. 【转】Javabyte[]数组和十六进制String之间的转换Util------包含案例和代码

    原文网址:http://blog.csdn.net/caijunjun1006/article/details/11740223 Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需 ...

  8. Javabyte[]数组和十六进制String之间的转换Util------包含案例和代码

    Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符, ...

  9. Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)

    使用Python内置函数:bin().oct().int().hex()可实现进制转换. 先看Python官方文档中对这几个内置函数的描述: bin(x)Convert an integer numb ...

随机推荐

  1. volatile关键字小结

    Java 提供了一种稍弱的同步机制,即 volatile 变量,用来确保将变量的更新操作通知到其他线程.可以将 volatile 看做一个轻量级的锁,但是又与锁有些不同: 1. 对于多线程,不是一种互 ...

  2. Android下创建一个输入法

    输入法是一种可以让用户输入文字的控件.Android提供了一套可扩展的输入法框架,使得应用程序可以让用户选择各种类型的输入法,比如基于触屏的键盘输入或者基于语音.当安装了特定输入法之后,用户即可在系统 ...

  3. UIColor

    UIColor.CIColor 和 CGColor 出现在不同的类库里面,其实就是颜色存储方式不同而已,比如 999 可以用 10 进制.2 进制.16 进制等存储.三者之间都是能够方便转换的,特别是 ...

  4. Ubuntu小记

    一. Ubuntu分区记忆 参考教程调整: 1. /boot用于安装grub,设为主分区 2. /根目录20G一般足够 3. /home剩下的给home 4. swap空间=物理内存 挂载点 大小 类 ...

  5. MySQL Index Condition Pushdown 原理与解析

    Index Condition Pushdown(ICP)是针对mysql使用索引从表中检索行数据时的一种优化方法.   原理: 在没有ICP特性之前,存储引擎根据索引去基表查找并将数据返回给mysq ...

  6. go语言入门教程百度网盘 mysql图形化操作与数据导入

    mysql图形化操作与数据导入 @author:Davie 版权所有:北京千锋互联科技有限公司 数据库存储技术 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个 ...

  7. ADX3000二层的负载均衡设计问题

    我的想法是 想在现有的局域网内部,利用ADX划分出一个新的局域网,模拟负载均衡. 现在有三台试验机器,拓扑图如下: 各个机器IP设置如下图: 我进行了如下的操作: 1 在组网配置当中,设置eth1_0 ...

  8. loj #6261 一个人的高三楼 FFT + 组合数递推

    \(\color{#0066ff}{ 题目描述 }\) 一天的学习快要结束了,高三楼在晚自习的时候恢复了宁静. 不过,\(HSD\) 桑还有一些作业没有完成,他需要在这个晚自习写完.比如这道数学题: ...

  9. POJ1055 BULK MAILING

    题目来源:http://poj.org/problem?id=1055 题目大意: 每封信都有一个zip-code, 由5位数字构成,可以通过将zip-code相同或相近的信件打包来节省成本.打包规则 ...

  10. POJ-1128-Frame Stacking

    链接:https://vjudge.net/problem/POJ-1128 题意: 每张图片上面画了一些边框,给出这些边框叠在一起后的图片,图片边框一定是由一个字母表示并且每条边至少三个字符,输入保 ...