如何使用HTML、CSS和JavaScript创建二进制计算器
HTML 或超文本标记语言以及 CSS(级联样式表) 和 JavaScript 可以用来开发能执行某些功能的交互式用户应用程序。类似地,可以使用HTML、CSS和JS一起开发二进制计算器。
二进制计算器对二进制数进行算术运算。二进制计算器的缓冲区限制为8位。如果算术运算的结果超过8位,则多余的位数会被截断。通过使用JavaScript函数来完成算术运算。
该应用程序由一个显示屏组成,用于显示用户输入以及算术运算的结果。使用按钮0和1来输入。使用+、-、*、/和计算按钮来执行输入的算术运算。
计算按钮绑定了一个JavaScript函数calculate()。当点击计算按钮时,calculate()函数被触发,并解析“output”部分的HTML。通过拆分字符串来获取第一个数字和第二个数字,最后使用parseInt()将它们转换为整数。方法parseInt()接受两个参数,第一个是要转换为整数的字符串,第二个是基值,这里是2或二进制。
根据用户选择的加法、减法、乘法或除法运算符执行算术运算。input()函数接收用户输入并在屏幕上显示。backspace()函数删除显示的字符串的最后一个字符。cls()函数清除显示屏。以下代码片段实现了一个二进制计算器。
示例: 当用户输入时,输入以HTML的形式保留在“output”部分。声明了一个全局变量scr,可以被所有的JavaScript函数访问。当有任何输入时,它会被存储在scr变量中。当点击计算按钮时,会在scr变量中存储的字符串中搜索运算符的存在,使用indexOf()方法返回运算符的索引,如果没有找到则返回-1。如果存在运算符,则在scr变量存储的字符串中拆分运算符符号(+,-,*,/),并将字符串存储在num数组中。由于输入的格式是字符串,必须将其转换为二进制整数格式以执行计算。使用parseint(str,base)方法解析字符串,其中str是要转换的字符串,base是数字的基数(这里使用二进制基数=2)。进行二进制转换后,执行指定的算术运算,将结果再次存储在scr变量中,并显示在“output”部分。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Binary Calculator</title>
<!--Bootstrap 4 CSS CDN -->
<link rel="stylesheet"
href=
"https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css"
integrity=
"sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2"
crossorigin="anonymous" />
</head>
<body>
<div class="container">
<div class="jumbotron">
<h1>Binary Calculator</h1>
<div id="output"></div>
<div class="container mt-2">
<div class="row">
<div class="col-12">
<button type="button"
class="btn btn-light"
onclick="input('0')">
0</button>
<button type="button"
class="btn btn-light"
onclick="input('1')">
1</button>
<button type="button"
class="btn btn-danger float-right ml-2"
onclick="cls()">
AC</button>
<button type="button"
class="btn btn-warning float-right"
onclick="backspace()">
Backspace</button>
</div>
</div>
<div class="row mt-2">
<div class="col-12">
<button type="button"
class="btn btn-info"
onclick="input('+')">+</button>
<button type="button"
class="btn btn-info"
onclick="input('-')">-</button>
<button type="button"
class="btn btn-info"
onclick="input('*')">*</button>
<button type="button"
class="btn btn-info"
onclick="input('/')">/</button>
</div>
</div>
<div class="row mt-2">
<div class="col-12">
<button type="button"
class="btn btn-success"
onclick="calculate()">Calculate</button>
</div>
</div>
</div>
</div>
</div>
<!--jquery and popper.js cdn -->
<script src=
"https://code.jquery.com/jquery-3.5.1.slim.min.js"
integrity=
"sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj"
crossorigin="anonymous"></script>
<script src=
"https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js"
integrity=
"sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx"
crossorigin="anonymous"></script>
</body>
</html>
CSS代码
.jumbotron {
width: 60%;
margin: auto;
text-align: center;
}
#output {
border: 2px solid black;
min-height: 60px;
text-align: right;
font-weight: bold;
font-size: 20px;
}
.btn {
min-width: 120px;
border: 2px solid black;
}
JavaScript代码
var scr = ""; //declared as global v
function calculate() {
if (scr.indexOf("+") != -1) {
// If + is present in the string
// String obtained from scr is split
var num = scr.split("+");
// The splitted string stores in num array
var x = parseInt(num[0], 2);
// The num[0] and num[1] are the two binary
// numbers resp
var y = parseInt(num[1], 2);
var sum = x + y;
var ans = sum.toString(2);
} else if (scr.indexOf("-") != -1) {
// If - is present in the string
var num = scr.split("-");
var x = parseInt(num[0], 2);
var y = parseInt(num[1], 2);
var sub = x - y;
var ans = sub.toString(2);
} else if (scr.indexOf("*") != -1) {
// If * is present in the string
var num = scr.split("*");
var x = parseInt(num[0], 2);
var y = parseInt(num[1], 2);
var mul = x * y;
var ans = mul.toString(2);
} else if (scr.indexOf("/") != -1) {
// If / is present in the string
var num = scr.split("/");
var x = parseInt(num[0], 2);
var y = parseInt(num[1], 2);
var div = x / y;
var ans = div.toString(2);
}
scr = ans;
document.getElementById("output").innerHTML = scr;
function input(ch) {
scr += ch;
document.getElementById("output").innerHTML = scr;
function backspace() {
var b = document.getElementById("output").innerHTML;
scr = b.substring(0, b.length - 1);
document.getElementById("output").innerHTML = scr;
function cls() {
scr = "";
document.getElementById("output").innerHTML = scr;
}
输出:

极客教程