十进制转换二进制(8bit)

对于十进制转换成二进制,这个代码中是满足8bit的,其中最高位是符号位。

具体的代码如下:

 1 public class DecadeToBinary
 2     {
 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#本质论》书中提到的一个方法。比这个简单。

posted @ 2011-01-12 11:20  chenping2008  阅读(2136)  评论(0编辑  收藏  举报