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 相关文章推荐
javascript正则表达式中参数g(全局)的作用
Nov 11 Javascript
jQuery中:checked选择器用法实例
Jan 04 Javascript
javascript遇到html5的一些表单属性
Jul 05 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
Sep 09 Javascript
Jquery 效果使用详解
Nov 23 Javascript
canvas实现图像截取功能
Feb 06 Javascript
详解react-webpack2-热模块替换[HMR]
Aug 03 Javascript
nuxt+axios解决前后端分离SSR的示例代码
Oct 24 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 jQuery
React 高阶组件入门介绍
Jan 11 Javascript
babel之配置文件.babelrc入门详解
Feb 22 Javascript
详解javascript中var与ES6规范中let、const区别与用法
Jan 11 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 define()函数以及defined()函数的用法详解
2013/06/05 PHP
ThinkPHP处理Ajax返回的方法
2014/11/22 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
javascript 二维数组的实现与应用
2010/03/16 Javascript
javascript针对DOM的应用分析(三)
2012/04/15 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
IE中document.createElement的iframe无法设置属性name的解决方法
2015/09/14 Javascript
Bootstrap Paginator分页插件与ajax相结合实现动态无刷新分页效果
2016/05/27 Javascript
利用AngularJs实现京东首页轮播图效果
2016/09/08 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
Electron autoUpdater实现Windows安装包自动更新的方法
2018/12/24 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
django 将model转换为字典的方法示例
2018/10/16 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
Python3.5基础之函数的定义与使用实例详解【参数、作用域、递归、重载等】
2019/04/26 Python
python与mysql数据库交互的实现
2020/01/06 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
美国羊皮公司:Overland
2018/01/15 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
武汉世纪畅想数字传播有限公司.NET笔试题
2014/07/22 面试题
手机被没收检讨书
2014/02/22 职场文书
战友聚会主持词
2014/04/02 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
关于清明节的演讲稿
2014/09/13 职场文书
2015年公司工作总结
2015/04/25 职场文书
十二生肖观后感
2015/06/12 职场文书
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers