> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/man/stdbit/stdc_has_single_bit.3.md).

# stdc\_has\_single\_bit.3

`stdc_has_single_bit` — 检查是否仅设置了一个位

## 名称

`stdc_has_single_bit`

## 概要

`Lb libc`

```c
#include <stdbit.h>
```

```c
bool stdc_has_single_bit_uc(unsigned char value);
bool stdc_has_single_bit_us(unsigned short value);
bool stdc_has_single_bit_ui(unsigned int value);
bool stdc_has_single_bit_ul(unsigned long value);
bool stdc_has_single_bit_ull(unsigned long long value);
bool stdc_has_single_bit(value);
```

## 描述

`stdc_has_single_bit_`*type*() 函数族检查 `value` 中是否恰好设置了一个位，其中 `value` 的类型分别为 `unsigned char`、`unsigned short`、`unsigned int`、`unsigned long` 或 `unsigned long long`，对应 *type* 为 **uc**、**us**、**ui**、**ul** 或 **ull**。类型通用宏 `stdc_has_single_bit`(*value*) 根据 `value` 的类型选择适当的 `stdc_has_single_bit_`*type*() 函数。

该函数族的行为与 `<sys/param.h>` 中 `powerof2`(*value*) 宏相似，但在 `value` 为零时有所不同：`powerof2` 认为零是 2 的幂，而 `stdc_has_single_bit` 不将零视为 2 的幂。

## 返回值

如果 `value` 中恰好设置了一个位，则返回 **true**，否则返回 **false**。即该函数判断 `value` 是否为 2 的幂。

## 参见

[stdbit(3)](https://github.com/FreeBSD-Ask/freebsd-man-sc/tree/main/stdbit/stdbit.3.md), [stdc\_count\_ones(3)](/man/stdbit/stdc_count_ones.3.md)

## 标准

`stdc_has_single_bit_`*type*() 函数族和 `stdc_has_single_bit` 类型通用宏遵循 -isoC-2023 标准。

## 历史

`stdc_has_single_bit_`*type*() 函数族和 `stdc_has_single_bit` 类型通用宏在 FreeBSD 15.1 中添加。

## 作者

Robert Clausecker <fuz@FreeBSD.org>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.bsdcn.org/man/stdbit/stdc_has_single_bit.3.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
