Drill

ProblemsJavaScript › patterns

Which is the lowest flag switched on

mediumpatternsBit manipulationMathJavaScript

A permissions field packs each right into its own bit. An audit reports the position of the lowest right that is granted.

lowestFlag(rights: int) → int

Solve it in the editor →

Where you start

function lowestFlag(rights) {
  
}

Worked examples

CallResult
lowestFlag(12)2
lowestFlag(1)0
lowestFlag(0)-1
lowestFlag(8)3

Hint

The expression n & -n leaves only the lowest set bit standing. Counting how far that has to shift down gives its position.

Reference solution in JavaScript
function lowestFlag(rights) {
  if (rights === 0) return -1;
  let position = 0;
  let field = rights;
  while ((field & 1) === 0) {
    field >>= 1;
    position += 1;
  }
  return position;
}

The same problem in another language

More patterns problems in JavaScript