十进制转换二进制(8bit)
时间:2011-01-12 来源:chenping2008
具体的代码如下:
1 public class DecadeToBinary2 {
3 public String Convert(Int32 num)
4 {
5 String convertResult = String.Empty;
6 Boolean negative = false;
7 if (num < 0)
8 {
9 negative = true;
10 num = (Math.Abs(num)^255)+1;
11 }
12 while (true)
13 {
14 convertResult = convertResult.Insert(0, (num % 2).ToString());
15 if (num / 2 < 2)
16 {
17 convertResult = convertResult.Insert(0, (num / 2).ToString());
18 break;
19 }
20 num = num / 2;
21 }
22 convertResult = convertResult.PadLeft(7, '0');
23 convertResult = convertResult.PadLeft(8, negative?'1':'0');
24 return convertResult;
25 }
26 }
具体的如果大家想实现16bit的,可以修改。
下面给出测试代码:
测试代码 [TestMethod]
public void TestConvert()
{
DecadeToBinary decadeToBinary = new DecadeToBinary();
Assert.AreEqual<String>("00000100", decadeToBinary.Convert(4));
Assert.AreEqual<String>("00000000", decadeToBinary.Convert(0));
Assert.AreEqual<String>("01111111", decadeToBinary.Convert(127));
Assert.AreEqual<String>("11111001", decadeToBinary.Convert(-7));
Assert.AreEqual<String>("10000001", decadeToBinary.Convert(-127));
Assert.AreEqual<String>("10000000", decadeToBinary.Convert(-128));
}
如果大家在使用时发现任何的错误,请你给出失败的数字,以便修改程序。
下次再给出《c#本质论》书中提到的一个方法。比这个简单。
相关阅读 更多 +