JavaScript实现MIPS乘法模拟的方法


Posted in Javascript onApril 17, 2015

本文实例讲述了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程序设计有所帮助。

Javascript 相关文章推荐
js 获取中文拼音,Select自动匹配字母获取值的代码
Sep 23 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
Dec 10 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
Jul 18 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
Apr 03 Javascript
实例详解angularjs和ajax的结合使用
Oct 22 Javascript
jquery获取css的color值返回RGB的方法
Dec 18 Javascript
Bootstrap基本插件学习笔记之Tooltip提示工具(18)
Dec 08 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
May 08 jQuery
AngularJS中filter的使用实例详解
Aug 25 Javascript
vue中利用iscroll.js解决pc端滚动问题
Feb 15 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
Oct 29 Javascript
antd多选下拉框一行展示的实现方式
Oct 31 Javascript
JavaScript中split() 使用方法汇总
Apr 17 #Javascript
javascript模拟命名空间
Apr 17 #Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
Apr 17 #Javascript
完美兼容多浏览器的js判断图片路径代码汇总
Apr 17 #Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
Apr 17 #Javascript
原生js实现移动开发轮播图、相册滑动特效
Apr 17 #Javascript
JavaScript实现简单图片翻转的方法
Apr 17 #Javascript
You might like
在字符串指定位置插入一段字符串的php代码
2010/02/16 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
php数组添加元素方法小结
2014/12/20 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
windows系统php环境安装swoole具体步骤
2021/03/04 PHP
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
javascript中的if语句使用介绍
2013/11/20 Javascript
JavaScript避免代码的重复执行经验技巧分享
2014/04/17 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
Javascript中arguments对象详解
2014/10/22 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
Javascript中arguments用法实例分析
2015/06/13 Javascript
Bootbox将后台JSON数据填充Form表单的实例代码
2018/09/10 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
[59:59]EG vs IG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python isinstance判断对象类型
2008/09/06 Python
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
python运行其他程序的实现方法
2017/07/14 Python
python制作小说爬虫实录
2017/08/14 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
计算机二级python学习教程(1) 教大家如何学习python
2019/05/16 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
奥林匹亚体育:Olympia Sports
2020/12/30 全球购物
Oracle快照(snapshot)
2015/03/13 面试题
倡议书范文
2014/04/16 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
2014民事授权委托书范本
2014/09/29 职场文书
党风廉正建设个人工作总结
2015/03/06 职场文书
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python