Skip to content

A collection of bit manipulation helpers written TypeScript.

License

Notifications You must be signed in to change notification settings

mzusin/js-bit-manipulation

Repository files navigation

๐ŸŒŸ Bit Manipulation in JavaScript ๐ŸŒŸ

A collection of bit manipulation helpers written in TypeScript.

This repository is intended for learning bit manipulation in JavaScript/TypeScript. You are welcome to check the source code of each function and the unit tests.

Table of Contents

Points ๐Ÿ“Œ

Common โœ๏ธ

  • export const getBinaryString: (num: number) => string;
  • export const parseBinaryString: (str: string) => number;
  • export const convertToUInt32: (num: number) => number;
  • export const swap: (num1: number, num2: number) => number[];

Math ๐Ÿ’ก

  • export const multiplyBy2: (num: number) => number;
  • export const multiplyBy2PowerN: (num: number, n: number) => number;
  • export const divideBy2: (num: number) => number;
  • export const divideBy2PowerN: (num: number, n: number) => number;
  • export const toggleSign: (num: number) => number;
  • export const addition: (num1: number, num2: number) => number;
  • export const subtraction: (num1: number, num2: number) => number;
  • export const multiplication: (num1: number, num2: number) => number;

Predicates ๐Ÿ”ฌ

  • export const isEven: (num: number) => boolean;
  • export const isOdd: (num: number) => boolean;
  • export const isEquals: (num1: number, num2: number) => boolean;
  • export const isNegative: (num: number) => boolean;
  • export const isPositive: (num: number) => boolean;

Least Significant Bit (LSB) โš—๏ธ

  • export const getLSB: (num: number) => number;
  • export const removeLSB: (num: number) => number;
  • export const setLSB: (num: number) => number;
  • export const unsetLSB: (num: number) => number;
  • export const toggleLSB: (num: number) => number;

Most Significant Bit (MSB) ๐Ÿค”

  • export const getMSB: (num: number) => number;
  • export const setMSB: (num: number) => number;
  • export const unsetMSB: (num: number) => number;

Working with bits ๐Ÿงฉ

  • export const setBitAtPosition: (num: number, n: number) => number;
  • export const unsetBitAtPosition: (num: number, n: number) => number;
  • export const toggleBitAtPosition: (num: number, n: number) => number;
  • export const isBitSetAtPosition: (num: number, n: number) => boolean;
  • export const invertBits: (num: number) => number;
  • export const countSetBits: (num: number) => number;
  • export const countUnsetBits: (num: number) => number;
  • export const getRightmostSetBit: (num: number) => number;

Masks ๐ŸŽญ

  • export const getNSetBitsMask: (n: number) => number;

Number Systems ๐Ÿ”ฎ

  • export const binaryToHex: (num: number) => string;
  • export declare const binaryToDecimal: (nums: number[]) => number;

Practice Problems

LeetCode Solutions

Solutions to LeetCode problems in JavaScript using bit manipulations approach only.


       (                      (    (         
   (   )\ )  *   )  (  (      )\ ) )\ )      
 ( )\ (()/(` )  /(  )\))(   '(()/((()/( (    
 )((_) /(_))( )(_))((_)()\ )  /(_))/(_)))\   
((_)_ (_)) (_(_()) _(())\_)()(_)) (_)) ((_)  
 | _ )|_ _||_   _| \ \((_)/ /|_ _|/ __|| __| 
 | _ \ | |   | |    \ \/\/ /  | | \__ \| _|  
 |___/|___|  |_|     \_/\_/  |___||___/|___|