数据结构实验 第三单元 二进制转换
2015-12-18 12:22
363 查看
十进制 → 二进制
二进制 → 十进制
/// <summary> /// 十进制转换为二进制,支持小数转换。 /// </summary> /// <param name="strDec"></param> /// <returns></returns> private string DecToBin(string source) { int cur = 0; LinkedStack ls = new LinkedStack(); LinkedQueue lq = new LinkedQueue(); //获取整数部分 for (cur = 0; cur < source.Length && source[cur] >= '0' && source[cur] <= '9'; cur++) { //整数部分入栈 ls.Push(source[cur]-'0'); } //跳过小数点 cur++; for (; cur < source.Length && source[cur] >= '0' && source[cur] <= '9'; cur++) { //小数部分入队 lq.Push(source[cur]-'0'); } //将字符串转换为实数类型 //获取整数部分 int intInt = 0; int fac = 1; while (!ls.Empty()) { intInt += fac*int.Parse(ls.Pop().ToString()); fac *= 10; } //获取小数部分 double dbDec = 0; double dbFac = 0.1; while (!lq.Empty()) { dbDec += dbFac * int.Parse(lq.Pop().ToString()); dbFac *= 0.1; } //整数部分转换 while (intInt!=0) { ls.Push(intInt % 2); intInt = intInt / 2; } if(ls.Empty()) { ls.Push(0); } //小数部分是否为0 while (dbDec != (double)((int)(dbDec))) { //取小数部分 dbDec = dbDec - (double)((int)(dbDec)); //乘二 dbDec *= 2; //取整 lq.Push((int)(dbDec)); } //输出二进制 System.Text.StringBuilder sb = new StringBuilder(100); //输出整数部分 while (!ls.Empty()) { sb.Append(ls.Pop()); } if (!lq.Empty()) { sb.Append("."); } while (!lq.Empty()) { sb.Append(lq.Pop()); } return sb.ToString(); }
二进制 → 十进制
/// <summary> /// 二进制转换为十进制,支持小数转换。 /// </summary> /// <param name="strBin"></param> /// <returns></returns> private double BinToDec(string source) { int cur = 0; LinkedStack ls = new LinkedStack(); LinkedQueue lq = new LinkedQueue(); //获取整数部分 for (cur = 0; cur < source.Length && source[cur] >= '0' && source[cur] <= '1'; cur++) { //整数部分入栈 ls.Push(source[cur] - '0'); } //跳过小数点 cur++; for (; cur < source.Length && source[cur] >= '0' && source[cur] <= '1'; cur++) { //小数部分入队 lq.Push(source[cur] - '0'); } // int intFac = 1; double ans = 0; while (!ls.Empty()) { ans += intFac * int.Parse(ls.Pop().ToString()); intFac *= 2; } double dbFac = 0.5; while (!lq.Empty()) { ans += dbFac * int.Parse(lq.Pop().ToString()); dbFac *= 0.5; } return ans; }
相关文章推荐
- 数据结构实验 第二单元 构造计算器
- 数据结构实验 第二单元 构造计算器
- 数据结构实验 第二单元 汉诺塔(非递归,用栈模拟递归)
- 数据结构实验 第二单元 汉诺塔(非递归,用栈模拟递归)
- 数据结构实验 第二单元 括号匹配
- 数据结构实验 第二单元 括号匹配
- 数据结构实验 第二单元 栈操作
- 数据结构实验 第二单元 栈操作
- 数据结构之插入排序
- <LeetCode OJ> 8. String to Integer (atoi)
- 数据结构实验之查找六:顺序查找
- <LeetCode OJ> 148. Sort List
- 学期末数据结构教程总结
- 数据结构总结
- 数据结构实践——用哈希法组织关键字
- 数据结构实践——用哈希法组织关键字
- 本学期数据结构学习总结
- 数据结构实践——验证算法
- 数据结构期末总结
- 数据结构实践——是否二叉排序树?