Skip to content

Interactive website for demonstrating or simulating binary multiplication via pencil-and-paper method, Booth's algorithm, and extended Booth's algorithm (bit-pair recoding)

Notifications You must be signed in to change notification settings

memgonzales/binary-multiplication

Repository files navigation

Binary Multiplication Simulator

badge badge badge badge Vercel

This project is an interactive website for demonstrating or simulating signed binary multiplication via three methods:

  • Pencil-and-paper method
  • Booth's algorithm
  • Extended Booth's algorithm (also known as modified Booth's algorithm, radix-4 Booth's algorithm, or bit-pair recoding)

This website is a major course output in a computer organization and architecture class under Mr. Roger Luis T. Uy of the Department of Computer Technology, De La Salle University. The following are its key features:

  • Support for both decimal and binary number input, up to a maximum of 16 bits (minimum: –215 = –32768, maximum: 215 – 1 = 32767)
  • Option to switch between demonstrating each step one at a time and displaying all the steps at once
  • Playback controls for navigating through the step-by-step demonstration
  • Exporting of step-by-step demonstration to a text file

💡 UPDATE (12/22/2022): With the shutting down of free Heroku services, we have migrated to Vercel: https://binary-multiply.vercel.app/

Project Structure

This project consists of the following folders:

Folder Description
assets Contains the image files
scripts Contains the JavaScript files
style Contains the CSS style sheets

It also includes the following files:

File Description
composer.json Contains the list of dependencies of the PHP project
Procfile Specifies the commands run by the project's dynos on Heroku
index.html Home (main) page of the website
index.php Entry point of the PHP project

Running the Simulator

User Manual

For detailed instructions on how to use this simulator, you may refer to our user manual.

Running on the Web

Open the following website: https://binary-multiply.vercel.app/

Running Locally

  1. Create a copy of this repository:

    • If git is installed, type the following command on the terminal:

      git clone https://github.com/memgonzales/binary-multiplication
      
    • If git is not installed, click the green Code button near the top right of the repository and choose Download ZIP. Once the zipped folder has been downloaded, extract its contents.

  2. Open index.html.

    • There is no need to install any additional software or dependency. However, internet connection is required to load fonts, libraries, and toolkits from their respective content delivery networks (CDNs).

Pencil-and-paper method

Extended booth's algorithm

Booth's algorithm

Built Using

This project uses JavaScript to carry out all the operations and computations on the client-side. Additional libraries and toolkits are enumerated in the following table:

Library/Toolkit Version Description License
jQuery 3.5.1 Fast, small, and feature-rich JavaScript library for HTML document traversal and manipulation, event handling, and animation MIT License
Font Awesome 4.7.0 Front-end toolkit featuring vector icons and social logos CC BY 4.0 License (Icons)
SIL OFL 1.1 License (Fonts)
MIT License (Code)
Google Fonts - Font embedding service library featuring free and open-source fonts Apache License 2.0
Material Design - Library for the design system developed by Google for Android, iOS, Flutter, and the web Apache License 2.0

The descriptions of these technologies are taken from their respective websites.

The opinionated code formatter Prettier was employed to enforce uniformity and consistency of coding style.

The website was refactored into a PHP application for faster and lightweight deployment on Heroku, a cloud platform as a service (PaaS).

💡 UPDATE (12/22/2022): With the shutting down of free Heroku services, we have migrated to Vercel, another cloud PaaS.

Authors

Assets (images) are properties of their respective owners. Attribution is found in the credits file.