Closed. This question needs details or clarity。它当前不接受答案。
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我有一个数字的二进制表示形式,它是一个最多18位长的char数组。我需要使用位运算符将右边的三位存储,其余的位存储到两个不同的字符串中。
例如,我有一个包含“ 00000000011101”的char数组。我需要一个存储“ 101”(最后三位)并存储“ 00000000011”(其余位)的函数。
但是,必须使用按位运算符来完成此操作。因此,我了解到我需要将字符串转换为int,然后进行移位,但是我不确定该如何处理。
您的帮助将不胜感激。
拥有
这是一些伪代码:
想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
5年前关闭。
我有一个数字的二进制表示形式,它是一个最多18位长的char数组。我需要使用位运算符将右边的三位存储,其余的位存储到两个不同的字符串中。
例如,我有一个包含“ 00000000011101”的char数组。我需要一个存储“ 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
后,获得最后三位等效于将结果与7进行“与”运算(二进制表示为&
)。获取其余位等效于将0000111
数字右移三位。这是一些伪代码:
lastThree = res & 7
topBits = res >> 3
关于c - C中二进制表示形式的按位运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23527708/