用C#實現二進位制的減法(包括二進位制小數)
用C#實現二進位制的減法(包括二進位制小數)
作為一個大學汪,我開始接觸程式設計。前兩天老師讓寫一個二進位制算術編碼,於是我遇到了這樣一個問題,怎麼實現二進位制數的減法。熬了兩天的夜,寫出了下面的程式碼。若有不對的地方大家海涵…
/// <summary>
/// 構建二進位制減法方法
/// </summary>
/// <param name="str">二進位制減數</param>
/// <param name="s">二進位制被減數</param>
/// <returns>二進位制得數</returns>
public string minus(string str, string s)
{
string max = str;
string min = s;
string num = s;
for (int i = s.Length - 1; i >= 0; i--)
{
if (str[i] == '.') { }
else
{
if (i == s.Length - 1)
{
if (max[i] == min[i])
{
num = num.Remove(i, 1);
num += "0";
}
else if (max[i] == '1' && min[i] == '0')
{
num = num.Remove(i, 1);
num += "1";
}
else
{
num = num.Remove(i, 1);
num += "1";
if (str[i - 1] == '.')
{
if (str[i - 2] == '1')
{
max = max.Remove(i - 2, 1);
max = max.Insert(i - 2, "0");
}
else
{
max = max.Remove(i - 2, 1);
max = max.Insert(i - 2, "1");
}
}
else
{
if (str[i - 1] == '1')
{
max = max.Remove(i - 1, 1);
max = max.Insert(i - 1, "0");
}
else
{
max = max.Remove(i - 1, 1);
max = max.Insert(i - 1, "1");
}
}
}
}
else if (i < s.Length - 1 && i > 0)
{
if (str[i + 1] == '0' && s[i + 1] == '1')
{
if (str[i - 1] == '.')
{
if (str[i - 2] == '0')
{
max = max.Remove(i - 2, 1);
max = max.Insert(i - 2, "1");
}
else
{
max = max.Remove(i - 2, 1);
max = max.Insert(i - 2, "0");
}
}
else
{
if (str[i - 1] == '0')
{
max = max.Remove(i - 1, 1);
max = max.Insert(i - 1, "1");
}
else
{
max = max.Remove(i - 1, 1);
max = max.Insert(i - 1, "0");
}
}
if (max[i] == min[i])
{
num = num.Remove(i, 1);
num = num.Insert(i, "0");
}
else
{
num = num.Remove(i, 1);
num = num.Insert(i, "1");
}
}
else
{
if (max[i] == min[i])
{
num = num.Remove(i, 1);
num = num.Insert(i, "0");
}
else if (max[i] == '1' && min[i] == '0')
{
num = num.Remove(i, 1);
num = num.Insert(i, "1");
}
else
{
num = num.Remove(i, 1);
num = num.Insert(i, "1");
if (str[i - 1] == '.')
{
if (str[i - 2] == '1')
{
max = max.Remove(i - 2, 1);
max = max.Insert(i - 2, "0");
}
else
{
max = max.Remove(i - 2, 1);
max = max.Insert(i - 2, "1");
}
}
else
{
if (str[i - 1] == '1')
{
max = max.Remove(i - 1, 1);
max = max.Insert(i - 1, "0");
}
else
{
max = max.Remove(i - 1, 1);
max = max.Insert(i - 1, "1");
}
}
}
}
}
else
{
if (max[i] == min[i])
{
num = num.Remove(i, 1);
num = num.Insert(i, "0");
}
else
{
num = num.Remove(i, 1);
num = num.Insert(i, "1");
}
}
}
}
return num;
}
相關文章
- 用C#程式碼實現二進位制與十進位制的互相轉換C#
- 二進位制與二進位制運算
- N位二進位制數加減法運算圖靈機圖靈
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 進位制詳解:二進位制、八進位制和十六進位制
- JavaScript 二進位制、八進位制與十六進位制JavaScript
- 二進位制,八進位制,十進位制,十六進位制的相互轉換
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 二進位制,八進位制,十進位制,十六進位制之間的轉換
- (二進位制)
- 二進位制
- 十進位制——二 (八、十六 )進位制
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 二進位制小總結
- 【進位制轉換】二進位制、十六進位制、十進位制、八進位制對應關係
- 二進位制、十進位制與十六進位制相互轉化
- Python 進位制互相轉換(二進位制、十進位制和十六進位制)Python
- 如何把十進位制的數輸入用二進位制全加器,並以十進位制輸出
- 計算機基礎進位制轉換(二進位制、八進位制、十進位制、十六進位制)計算機
- JavaScript 二進位制數字轉換為十進位制JavaScript
- 大話二進位制,八進位制,十進位制,十六進位制之間的轉換
- 二進位制轉十進位制快速方法
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- JAVA 二進位制,八進位制,十六進位制,十進位制間進行相互轉換Java
- 什麼是二進位制?二進位制如何轉換?
- JavaScript八進位制與二進位制表示法JavaScript
- JavaScript 八進位制與二進位制表示法JavaScript
- Oracle中的二進位制、八進位制、十進位制、十六進位制相互轉換函式Oracle函式
- 進位制之間的轉換之“十六進位制 轉 十進位制 轉 二進位制 方案”
- ORACLE使用函式對二進位制、十進位制、十六進位制數互相轉換Oracle函式
- 04 二進位制
- javascript十進位制數字和二進位制相互轉換JavaScript
- 位,位元組,二進位制,十六進位制間的關係
- JavaScript十進位制轉換為二進位制JavaScript
- Oracle二進位制與十進位制轉換Oracle
- 十進位制轉二進位制推導(草稿)
- [計算機基礎] 計算機進位制轉換:二進位制、八進位制、十進位制、十六進位制計算機