mirror of
https://github.com/trekhleb/javascript-algorithms.git
synced 2026-03-13 08:51:02 +08:00
Add bit manipulation section.
This commit is contained in:
16
src/algorithms/math/bits/updateBit.js
Normal file
16
src/algorithms/math/bits/updateBit.js
Normal file
@@ -0,0 +1,16 @@
|
||||
/**
|
||||
* @param {number} number
|
||||
* @param {number} bitPosition - zero based.
|
||||
* @param {number} bitValue - 0 or 1.
|
||||
* @return {number}
|
||||
*/
|
||||
export default function updateBit(number, bitPosition, bitValue) {
|
||||
// Normalized bit value.
|
||||
const bitValueNormalized = bitValue ? 1 : 0;
|
||||
|
||||
// Init clear mask.
|
||||
const clearMask = ~(1 << bitPosition);
|
||||
|
||||
// Cleat bit value and then set it up to required value.
|
||||
return (number & clearMask) | (bitValueNormalized << bitPosition);
|
||||
}
|
||||
Reference in New Issue
Block a user