Logo

Programming-Idioms

Assign to t the number of trailing 0 bits in the binary representation of the integer n.

E.g. for n=112, n is 1110000 in base 2 ⇒ t=4
New implementation

Be concise.

Be useful.

All contributions dictatorially edited by webmasters to match personal tastes.

Please do not paste any copyright violating material.

Please try to avoid dependencies to third-party libraries and frameworks.

Other implementations
#include <stdio.h>
int t = -1;
if (n)
        while (! (n & 1<<++t));
else
        t = 8*sizeof(n);
using System;
using System.Linq;
var t = Convert.ToString(n, 2)
    .Reverse()
    .TakeWhile(i => i == '0')
    .Count();
int t = 0;

if(n != 0)
{
    while((n & 1) == 0)
    {
        t++;
        n >>= 1;
    }
}
else
{
    t = 8 * sizeof(int);
}
t = n.bitLength - 1 - n.toRadixString(2).lastIndexOf('1');
t = n.toRadixString(2)
	.split('')
	.reversed
	.takeWhile((e) => e == '0')
	.length;
var t = 0;
while (n.isEven && n != 0) {
  t++;
  n = n >> 1;
}
trailingZeros(Num) ->
        trailingZeros(Num, 0).

trailingZeros(Num, Count) when Num band 1 == 0 ->
        trailingZeros(Num div 2, Count + 1);
trailingZeros(_, Count) -> Count.
t = trailz(n)
import "math/bits"
t := bits.TrailingZeros(n)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
Pattern pattern = Pattern.compile("(0+)$");
Matcher matcher = pattern.matcher(Integer.toBinaryString(n));
int t = 0;
if(matcher.find()) {
	t = matcher.group(1).length();
}
Integer t = Integer.numberOfTrailingZeros(n);
function Trail(n: Integer): Integer;
var
  Mask: Integer;
begin
  T := 0;
  while (T < SizeOf(Integer)*8) do
  begin
    Mask := 1 shl T;
    if (n and Mask) <> 0 then Exit;
    Inc(T);
  end;
end;

begin
  writeln(Trail(112),' (should be 4)');
end.
$s = sprintf '%b', $n; 
$n = length $s; 
$t++ while !substr($s, --$n, 1) && $n >= 0; 
$t = sprintf('%b', $n) =~ /(0+)$/ ? length($1) : 0;
t = bin(n)[::-1].find('1')
t = n.digits(2).index(1)
let t = n.trailing_zeros();