我有一个数字的二进制表示形式,作为字符数组,最多 18 位长。我需要使用按位运算符将右侧的三位和剩余的位存储到两个不同的字符串中。
例如,我有一个包含“00000000011101”的字符数组。我需要一个函数来存储“101”(最后三位)并存储“00000000011”(剩余位)。
但是,这必须使用按位运算符来完成。所以我知道我需要将字符串转换为 int,然后进行移位,但我不知道如何去做。
非常感谢您的帮助。
最佳答案
将字符串转换为int
很简单:从零开始 int
,然后检查二进制表示的字符,并检查它是零还是一。首先,将部分结果左移。然后,如果该数字为 1,则将结果与 1
或。继续下一个字符。当您看到空终止符'\0'
时,停止。
这是一些伪代码:
res = 0
ptr = "00000000011101"
while ptr is not pointing to '\0'
res <<= 1;
if ptr points to '1'
res |= 1;
一旦您拥有 int
,获取最后三位相当于与 &
进行 AND 运算结果为 7(其二进制表示为 0000111
)。获取其余位相当于移位 >>
数字正好是三。
这是一些伪代码:
lastThree = res & 7
topBits = res >> 3
关于c - C 中二进制表示的按位运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23527708/