gpt4 book ai didi

c - 在 C 中将 uint8 拆分为 4 个单元 2,以便稍后获得单元 10

转载 作者:行者123 更新时间:2023-11-30 19:09:28 25 4
gpt4 key购买 nike

我想用另外 2 位来扩展我的 uint8 变量,比如 uint10。为此我使用了这种方法,但它只考虑了掩码。

void splitbits(unsigned int x){ //x=11001010 and i want to have this for any given X
split[0]=(x>> 6) & 0x01 ; //split[0]=11
split[1]=(x>> 4) & 0x01 ; //split[1]=00
split[2]=(x>> 2) & 0x01 ; //split[2]=10
split[3]=x & 0x01 ; //split[3]=10
}

最佳答案

split[0]=(x>> 6) & 0x01 ; //split[0]=11

该评论实际上是不正确的。您屏蔽掉除最低有效位之外的所有位,而不是两个最低有效位。您需要使用二进制 11 进行掩码,即十进制或十六进制中的 3。

split[0]=(x>> 6) & 0x03 ; //split[0]=11
// ^ binary 11

但是,如果您想用任何其他数字生成 10 位数字,您可以一次性完成这一切。即

uint16_t my10Bit number = anotherNumber & 0x3ff // 3ff is 1111111111 in binary

我使用了 uint16_t 因为这是包含 10 位的最小可移植类型。

关于c - 在 C 中将 uint8 拆分为 4 个单元 2,以便稍后获得单元 10,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43181757/

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