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 相关文章推荐
关于可运行代码无法正常执行的使用说明
May 13 Javascript
Jquery Change与bind事件代码
Sep 29 Javascript
jQuery中mouseover事件用法实例
Dec 26 Javascript
jquery实现的Banner广告收缩效果代码
Sep 02 Javascript
利用jQuery实现漂亮的圆形进度条倒计时插件
Sep 30 Javascript
AngularJS实现单独作用域内的数据操作
Sep 05 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
Jul 12 Javascript
laravel5.4+vue+element简单搭建的示例代码
Aug 29 Javascript
JavaScript面向对象精要(上部)
Sep 12 Javascript
使用 Vue 实现一个虚拟列表的方法
Aug 20 Javascript
浅谈Vue组件单元测试究竟测试什么
Feb 05 Javascript
vue 实现click同时传入事件对象和自定义参数
Jan 29 Vue.js
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 IN_ARRAY 函数使用注意事项
2010/07/24 PHP
基于magic_quotes_gpc与magic_quotes_runtime的区别与使用介绍
2013/04/22 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
encode脚本和normal脚本混用的问题与解决方法
2007/03/08 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
仅IE9/10同时支持script元素的onload和onreadystatechange事件分析
2011/04/27 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
async/await与promise(nodejs中的异步操作问题)
2017/03/03 NodeJs
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
JS实现在文本指定位置插入内容的简单示例
2017/12/22 Javascript
JavaScript之scrollTop、scrollHeight、offsetTop、offsetHeight等属性学习笔记
2020/07/15 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
python实现FTP服务器服务的方法
2017/04/11 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
让你的Python代码实现类型提示功能
2019/11/19 Python
python中必要的名词解释
2019/11/20 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
Python如何使用turtle库绘制图形
2020/02/26 Python
Python基于xlutils修改表格内容过程解析
2020/07/28 Python
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
Charles & Keith欧盟:新加坡时尚品牌
2019/08/01 全球购物
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
Windows和Linux动态库应用异同
2016/07/28 面试题
毕业自我鉴定范文
2013/11/06 职场文书
店长岗位的工作内容
2013/11/12 职场文书
作风建设年活动总结
2014/08/27 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
如何用RabbitMQ和Swoole实现一个异步任务系统
2021/05/29 PHP
深入浅析Django MTV模式
2021/09/04 Python