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 匿名调用实现代码
Jun 19 Javascript
浏览器常用高宽的jquery插件
Feb 24 Javascript
分享一个自己动手写的jQuery分页插件
Aug 28 Javascript
VUEJS实战之利用laypage插件实现分页(3)
Jun 13 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
Jan 03 Javascript
详解angular部署到iis出现404解决方案
Aug 14 Javascript
详解小程序如何改变onLoad的执行时机
Nov 01 Javascript
vue中在vuex的actions中请求数据实例
Nov 08 Javascript
JavaScript 链表定义与使用方法示例
Apr 28 Javascript
Vue循环中多个input绑定指定v-model实例
Aug 31 Javascript
在nuxt中使用路由重定向的实例
Nov 06 Javascript
layui使用及简单的三级联动实现教程
Dec 01 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 5.5版本的array_column()函数
2014/10/24 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
PHP实现Markdown文章上传到七牛图床的实例内容
2020/02/11 PHP
Javascript面向对象编程(三) 非构造函数的继承
2011/08/28 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
Js自定义多选框效果的实例代码
2017/07/05 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
跟老齐学Python之正规地说一句话
2014/09/28 Python
使用IronPython把Python脚本集成到.NET程序中的教程
2015/03/31 Python
Django验证码的生成与使用示例
2017/05/20 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
在keras里实现自定义上采样层
2020/06/28 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
用python制作个视频下载器
2021/02/01 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
西班牙创意礼品和小工具网上商店:Curiosite
2016/07/26 全球购物
安全的后院和健身蹦床:JumpSport
2019/07/15 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
开放系统互连参考模型
2016/06/29 面试题
给老师的检讨书
2014/02/11 职场文书
读书之星事迹材料
2014/05/12 职场文书
2014年店长工作总结
2014/11/17 职场文书
承兑汇票转让证明怎么写?
2014/11/30 职场文书
文明班级申报材料
2014/12/24 职场文书
学生保证书
2015/01/16 职场文书
党员个人自我评价
2015/03/03 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
安全生产学习心得体会
2016/01/18 职场文书
浅谈Node的内存泄露问题
2022/05/06 NodeJs