# Idiom #262 Count trailing zero bits

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

``````function Trail(n: Integer): Integer;
var
begin
T := 0;
while (T < SizeOf(Integer)*8) do
begin
if (n and Mask) <> 0 then Exit;
Inc(T);
end;
end;

begin
writeln(Trail(112),' (should be 4)');
end.``````
``#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);``
``````\$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();``

tkoenig