首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

十进制数怎么转成 二进制数 (不用计算器,也不用.net自带函数)

2013-02-19 
十进制数如何转成 二进制数 (不用计算器,也不用.net自带函数)我只想知道转化的原理,不要用程序自带函数去

十进制数如何转成 二进制数 (不用计算器,也不用.net自带函数)
我只想知道转化的原理,不要用程序自带函数去转 也不用计算器,只用一只笔去得到结果。

比如 
100  ->1100100
101  ->1100101

还有 负数能转成二进制数么 怎么转? 比如-100
还有 小数能赚成二进制么 怎么转?  比如 120.54
[解决办法]
十进制整数转换为二进制整数采用"除2取余,逆序排列"法。
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。

具体算法可以参见《百度百科》十进制转二进制,说得很详细,也很简单。
[解决办法]
遇2进1

如3-> 11
  4->100
...
[解决办法]
参照转换标准。
[解决办法]
问题一:正负是由标志位决定的,比如一个int32类型,里面会有一个bit表明是正书还是负数。
问题二:小数和整数一样的方法,只不过小数是2的-n次方累加,整数是2的n次方累加
[解决办法]
 static void Main(string[] args)
        {
            double s = 12.34;
            string str = "";
            jzzh((int)s, ref str);
            str += ".";
            xsjzzh(s - (int)s, ref str, 0);
            Console.ReadLine();
        }
//转换整数
        static void jzzh(int n, ref string s)
        {
            if (n / 2 != 0)
                jzzh(n / 2, ref s);
            s += n % 2;
        }
//转换小数
        static void xsjzzh(double n, ref string s, int sum)
        {
            if (sum > 20 
[解决办法]
 n * 2 <= 0.000001)
            {
                return;
            }
            s += (int)(n * 2);
            xsjzzh(n * 2 - (int)(n * 2), ref s, sum + 1);
        }
[解决办法]
除一下就行了,取余数
[解决办法]
计算机基础没学好吧。。 大一入门就要学的。
[解决办法]
double d = 123.456;
string bin = "";


int d1 = (int)d;
while (d1 > 0)
{
    bin = (d1 % 2 == 1 ? "1" : "0") + bin;
    d1 = d1 / 2;
}
double d2 = d - (int)d;
bin = bin + ".";
double x = 0.5;
for (int i = 0; i < 10; i++)
{
    bin = bin + (d2 >= x ? "1" : "0");
    if (d2 >= x)
        d2 = d2 - x;
    x = x / 2.0;
}
Console.WriteLine(bin); 

热点排行