日期:2014-05-17  浏览次数:21071 次

十进制数如何转成 二进制数 (不用计算器,也不用.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 = "";