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资料toString 方法
Mar 13 Javascript
javascript function、指针及内置对象
Feb 19 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
Nov 14 Javascript
js 优化次数过多的循环 考虑到性能问题
Mar 05 Javascript
javascript实现TreeView 无刷新展开的实例代码
Jul 13 Javascript
jQuery实现Twitter的自动文字补齐特效
Nov 28 Javascript
Jquery中find与each方法用法实例
Feb 04 Javascript
移动端js图片查看器
Nov 17 Javascript
分析JS中this引发的bug
Dec 12 Javascript
Vue 换肤的示例实践
Jan 23 Javascript
vue中是怎样监听数组变化的
Oct 24 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
Nov 02 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出现Cannot modify header information问题的解决方法大全
2008/04/09 PHP
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
php中用memcached实现页面防刷新功能
2014/08/19 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
PHP+原生态ajax实现的省市联动功能详解
2017/08/15 PHP
jQuery选中select控件 无法设置selected的解决方法
2010/09/01 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
开启BootStrap学习之旅
2016/05/04 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
详解angular中通过$location获取路径(参数)的写法
2017/03/21 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
Vue+Element-UI实现上传图片并压缩
2019/11/26 Javascript
vantUI 获得piker选中值的自定义ID操作
2020/11/04 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
零基础写python爬虫之神器正则表达式
2014/11/06 Python
pygame游戏之旅 添加碰撞效果的方法
2018/11/20 Python
在python中利用KNN实现对iris进行分类的方法
2018/12/11 Python
在Pandas中处理NaN值的方法
2019/06/25 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
Python matplotlib以日期为x轴作图代码实例
2019/11/22 Python
pytorch方法测试——激活函数(ReLU)详解
2020/01/15 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
Python库安装速度过慢解决方案
2020/07/14 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
日本运动品牌美津浓官方购物网站:MIZUNO SHOP
2016/08/21 全球购物
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
幼儿师范毕业生自荐信
2013/11/09 职场文书
优秀大学生职业生涯规划书
2014/02/27 职场文书
政风行风整改报告
2014/11/06 职场文书
个人先进材料范文
2014/12/30 职场文书
行政申诉状范文
2015/05/20 职场文书
九不准学习心得体会
2016/01/23 职场文书
ipad隐藏软件app图标方法
2022/04/19 数码科技