gpt4 book ai didi

c - 如何访问给定 C 中一个字节的特定位?

转载 作者:行者123 更新时间:2023-12-02 04:35:45 25 4
gpt4 key购买 nike

例如,假设我有类似“0000 0000 0000 1110”的内容。

如何访问最左边的 1 并将其更改为 0?

最佳答案

这两个函数可以处理 64 位值。

uint8_t get_bit(uint64_t bits, uint8_t pos)
{
return (bits >> pos) & 0x01;
}

uint64_t set_bit(uint64_t bits, uint8_t pos, uint8_t value)
{
uint64_t mask = 1LL << (63 - pos);
if (value)
bits |= mask;
else
bits &= ~mask;
return bits;
}

uint64_t v = ...;
uint8_t i = 63;
for(;i>=0; i--)
{
if(get_bit(v, i)){
v=set_bit(v,i, 0);
break;
}
}

关于c - 如何访问给定 C 中一个字节的特定位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22004798/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com