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