JavaScript实现MIPS乘法模拟的方法

前端技术 2023/09/10 JavaScript

本文实例讲述了JavaScript实现MIPS乘法模拟的方法。分享给大家供大家参考。具体如下:

<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" 
\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head runat=\"server\">
 <title>MIPS MULTIPLICATION SIMULATOR </title>
 <script type=\"text/javascript\">
  /* CREATED BY SERKAN SENDUR */
  function StringToNumberArray(Bin) {
   var numberArray = [];
   for (var i = 0; i < Bin.length; i++) {
    numberArray.push(Bin.substring(i, i + 1));
   }
   return numberArray;
  }
  function ConvertToDecimal(Bin) {
   var decimalNumber = 0;
   var numberArray = StringToNumberArray(Bin);
   numberArray.reverse();
   for (var i = 0; i < numberArray.length; i++) {
    decimalNumber += numberArray[i] * Math.pow(2, i);
   }
   return decimalNumber;
  }
  function ConvertToBinary(dec) {
   var bits = [];
   var dividend = dec;
   var remainder = 0;
   while (dividend >= 2) {
    remainder = dividend % 2;
    bits.push(remainder);
    dividend = (dividend - remainder) / 2;
   }
   bits.push(dividend);
   bits.reverse();
   return bits.join(\"\");
  }
  function Multiply() {
   var firstNumber = document.getElementById(\"txtFirst\").value;
   var secondNumber = document.getElementById(\"txtSecond\").value;
   var multiplier = ConvertToBinary(firstNumber);
   var multiplicant = ConvertToBinary(secondNumber);
   var product = 0;
   var step = \"Initial values\";
   var iteration = 0;
   AppendToTable(iteration, step, multiplier, multiplicant, product);
   multiplicationAlgoritm(multiplier, multiplicant, product, 4);
  }
  function multiplicationAlgoritm(multiplier, multiplicant, product, counter) {
   if (counter > 0) {
    var iteration = 5 - counter;
    var decProduct = ConvertToDecimal(product);
    var decMultiplier = ConvertToDecimal(multiplier);
    var decMultiplicant = ConvertToDecimal(multiplicant);
    if (Right(multiplier, 1) == \"1\") {
     decProduct = decProduct + decMultiplicant;
     product = ConvertToBinary(decProduct);
     AppendToTable(iteration, \"1a\", multiplier, multiplicant, product);
    }
    else {
     AppendToTable(iteration, 1, multiplier, multiplicant, product);
    }
    decMultiplicant = ConvertToDecimal(multiplicant);
    decMultiplicant = decMultiplicant << 1;
    multiplicant = ConvertToBinary(decMultiplicant);
    AppendToTable(iteration, 2, multiplier, multiplicant, product);
    decMultiplier = ConvertToDecimal(multiplier);
    decMultiplier = decMultiplier >> 1;
    multiplier = ConvertToBinary(decMultiplier);
    AppendToTable(iteration, 3, multiplier, multiplicant, product);
    counter--;
    multiplicationAlgoritm(multiplier, multiplicant, product, counter);
   }
  }
  function AppendToTable(iteration, step, multiplier, multiplicant, product) {
   var row = document.getElementById(\"tblResults\").insertRow();
   var cell = row.insertCell();
   cell.innerText = iteration;
   var cell = row.insertCell();
   cell.innerText = step;
   var cell = row.insertCell();
   cell.innerText = multiplier;
   var cell = row.insertCell();
   cell.innerText = multiplicant;
   var cell = row.insertCell();
   cell.innerText = product;
  }
  function ResetTable() {
   for (var i = document.getElementById(\"tblResults\").rows.length; i > 1; i--) {
    document.getElementById(\"tblResults\").deleteRow(i - 1);
   }
  }
  function Right(str, n) {
   if (n <= 0)
    return \"\";
   else if (n > String(str).length)
    return str;
   else {
    var iLen = String(str).length;
    return String(str).substring(iLen, iLen - n);
   }
  }
 </script>
 <style type=\"text/css\">
  .style1
  {
   border-collapse: collapse;
   border-style: solid;
   border-width: 1px;
  }
  .style2
  {
   width: 6px;
  }
  .style4
  {
   color: #3366FF;
  }
  .style5
  {
   color: #0066FF;
  }
 </style>
</head>
<body>
 <br />
 <h3 class=\"style4\">
   WELCOME TO MIPS MULTIPLICATION SIMULATOR</h3>
 <hr style=\"color: #0033CC\" />
 <table>
  <tr>
   <td class=\"style5\">
    Multiplier :
   </td>
   <td>
    <input id=\"txtFirst\" type=\"text\" />
   </td>
  </tr>
  <tr>
   <td class=\"style5\">
    Multiplicant :
   </td>
   <td>
    <input id=\"txtSecond\" type=\"text\" />
   </td>
  </tr>
  <tr>
   <td align=\"center\" colspan=\"2\">
    <input id=\"btnMultiply\" type=\"button\" value=\"Multiply\" 
 onclick=\"ResetTable();Multiply();\"
     style=\"color: #3399FF\" />
   </td>
  </tr>
 </table>
 <table class=\"style1\" cellpadding=\"2\" cellspacing=\"2\"
 id=\"tblResults\">
  <tr style=\"color: White\">
   <td bgcolor=\"#3366FF\">
    Iteration
   </td>
   <td bgcolor=\"#3366FF\">
    Step
   </td>
   <td bgcolor=\"#3366FF\">
    Multiplier
   </td>
   <td bgcolor=\"#3366FF\" class=\"style2\">
    Multiplicant
   </td>
   <td bgcolor=\"#3366FF\">
    Product
   </td>
  </tr>
 </table>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

本文地址:https://www.stayed.cn/item/26277

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。