我有一个接受角色的C函数。我需要提取插入该字符的位。我很清楚提取部分。谁能让我知道如何将值插入位?
答案 0 :(得分:3)
非常模糊的问题,我建议你刷新按位运算符。这应该指向正确的方向。
答案 1 :(得分:2)
既然您要求提出想法而不是确切的实施:
这是你可以做的,
迭代每一位并根据需要进行设置。
您可以设置第n位(0索引如下)
byteVal = byteVal | (1<<N);
答案 2 :(得分:1)
如果要将字符中的第N位设置为1,则需要OR
将值1
向右移动N位:
c |= 1 << N;
答案 3 :(得分:1)
假设您要检查字符的第n位:
int checkBit(char c, int n) {
return c & (1 << n);
}
设置第n位:
void setBit(char *c, int n) {
*c |= 1 << n;
}
答案 4 :(得分:1)
当然,只需求助于二元操作。以下函数应该完全符合您的要求,但使用简单的界面:
char set8 (char ch, int index) {
if (index >= 1 && index <= 8) {
return (char)(ch | (1 << index - 1));
}
return ch;
}
int n = 0;
set8(n, 1); // Returns 1
set8(n, 2); // Returns 2
set8(n, 3); // Returns 4
...
set8(n, 9); // Returns n (0)
该函数使用按位或切换指定的位。如果指定的索引超出了一个字节(8位)的范围,那么它只返回传入的字符。