# Function tracing_core::stdlib::intrinsics::ctlz

const: 1.40.0 · source · ```
pub const extern "rust-intrinsic" fn ctlz<T>(x: T) -> u32where
T: Copy,
```

🔬This is a nightly-only experimental API. (

`core_intrinsics`

)## Expand description

Returns the number of leading unset bits (zeroes) in an integer type `T`

.

Note that, unlike most intrinsics, this is safe to call;
it does not require an `unsafe`

block.
Therefore, implementations must not require the user to uphold
any safety invariants.

The stabilized versions of this intrinsic are available on the integer
primitives via the `leading_zeros`

method. For example,
`u32::leading_zeros`

## §Examples

```
#![feature(core_intrinsics)]
use std::intrinsics::ctlz;
let x = 0b0001_1100_u8;
let num_leading = ctlz(x);
assert_eq!(num_leading, 3);
```

An `x`

with value `0`

will return the bit width of `T`

.

```
#![feature(core_intrinsics)]
use std::intrinsics::ctlz;
let x = 0u16;
let num_leading = ctlz(x);
assert_eq!(num_leading, 16);
```