Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过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/

10-11 22:40
查看更多