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 相关文章推荐
jquery 打开窗口返回值实现代码
Mar 04 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
Mar 16 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
May 24 Javascript
jQuery获取访问者IP地址的方法(基于新浪API与QQ查询接口)
May 25 Javascript
详解JavaScript节流函数中的Throttle
Jul 16 Javascript
B/S(Web)实时通讯解决方案分享
Apr 06 Javascript
javascript实现动态显示颜色块的报表效果
Apr 10 Javascript
简单谈谈require模块化jquery和angular的问题
Jun 23 jQuery
js实现手机web图片左右滑动效果
Dec 29 Javascript
详解VUE前端按钮权限控制
Apr 26 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
Dec 20 Javascript
微信小程序接入vant Weapp组件的详细步骤
Oct 28 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 mysql索引问题
2008/06/07 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
PHP session会话的安全性分析
2011/09/08 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
基于linnux+phantomjs实现生成图片格式的网页快照
2015/04/15 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
js 学习笔记(三)
2009/12/29 Javascript
JQuery小知识
2010/10/15 Javascript
javascript二维数组转置实例
2015/01/22 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
基于jQuery实现返回顶部实例代码
2016/01/01 Javascript
js 函数式编程学习笔记
2017/03/25 Javascript
vue路由跳转时判断用户是否登录功能的实现
2017/10/26 Javascript
关于vue中的ajax请求和axios包问题
2018/04/19 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
2018/08/09 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
jQuery Ajax实现Select多级关联动态绑定数据的实例代码
2018/10/26 jQuery
NodeJS实现同步的方法
2019/03/02 NodeJs
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
详解vue实现坐标拾取器功能示例
2020/11/18 Vue.js
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
Python的Django框架中的表单处理示例
2015/07/17 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
python 模拟登录B站的示例代码
2020/12/15 Python
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
Java基础知识面试要点
2016/07/29 面试题
外语学院毕业生的自我鉴定
2013/11/28 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
2014年个人售房协议书
2014/10/30 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
SQL Server的存储过程与触发器以及系统函数和自定义函数
2022/04/10 SQL Server