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实现在Repeater控件中创建可隐藏区域的代码
Sep 16 Javascript
页面实时更新时间的JS实例代码
Dec 18 Javascript
JavaScript通过正则表达式实现表单验证电话号码
Mar 07 Javascript
JavaScript前端开发之实现二进制读写操作
Nov 04 Javascript
Vuejs第九篇之组件作用域及props数据传递实例详解
Sep 05 Javascript
微信js-sdk上传与下载图片接口用法示例
Oct 12 Javascript
bootstrap——bootstrapTable实现隐藏列的示例
Jan 14 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
Jul 04 jQuery
浅析Visual Studio Code断点调试Vue
Feb 27 Javascript
如何更好的编写js async函数
May 13 Javascript
基于js实现抽红包并分配代码实例
Sep 19 Javascript
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 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
重料打造自己的“宝马”---第三代
2021/03/02 无线电
用PHP将网址字符串转换成超链接(网址或email)
2010/05/25 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
Smarty缓存机制实例详解【三种缓存方式】
2019/07/20 PHP
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
学习js在线html(富文本,所见即所得)编辑器
2012/12/18 Javascript
UpdatePanel和Jquery冲突的解决方法
2013/04/01 Javascript
JS 获取鼠标左右键的键值方法
2014/10/11 Javascript
在JavaScript的AngularJS库中进行单元测试的方法
2015/06/23 Javascript
利用Vue.js指令实现全选功能
2016/09/08 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
jQuery实现点击图标div循环放大缩小功能
2018/09/30 jQuery
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
Vue+Express实现登录状态权限验证的示例代码
2019/05/05 Javascript
vue draggable resizable 实现可拖拽缩放的组件功能
2019/07/15 Javascript
JQuery样式与属性设置方法分析
2019/12/07 jQuery
webpack 最佳配置指北(推荐)
2020/01/07 Javascript
vue项目中使用rem,在入口文件添加内容操作
2020/11/11 Javascript
[00:10]DOTA2全国高校联赛 以DOTA2会友
2018/05/30 DOTA
[01:02:05]LGD vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python调用短信猫控件实现发短信功能实例
2014/07/04 Python
python使用wxpython开发简单记事本的方法
2015/05/20 Python
Python批量更改文件名的实现方法
2017/10/29 Python
python获取多线程及子线程的返回值
2017/11/15 Python
使用Flask集成bootstrap的方法
2018/07/24 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
scrapy头部修改的方法详解
2020/12/06 Python
微软香港官网及网上商店:Microsoft HK
2016/09/01 全球购物
同步和异步有何异同,在什么情况下分别使用他们?
2012/12/28 面试题
银行爱岗敬业演讲稿
2014/05/05 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
最美护士演讲稿
2014/08/27 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
公务员年度考核评语
2014/12/31 职场文书
小学数学国培研修日志
2015/11/13 职场文书
超外差式晶体管收音机的组装与统调
2021/04/22 无线电