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