Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        3年前关闭。
                                                                                            
                
        
左移位运算符的一个目的是将左操作数乘以2,右移位乘以整数除法。两者都有约束,例如未定义的行为Link等。我不明白什么是真正的用途。我什至没有信心将它们用于除法或乘法。

最佳答案

它们是按位运算符,因此它们用于按位运算。这是一个简单的示例,显示了一些需要位移位的按位运算。

struct color {
    unsigned char r;
    unsigned char g;
    unsigned char b;
};

void setColor(struct color*,int);
int getColor(struct color*);

int main() {
    struct color myColor;
    int color;
    setColor(&myColor,0x00ff00);
    color = getColor(&myColor);
    return 0;
}

void setColor(struct color* color,int rgb) {
    color->r = (rgb>>16)&0xff;
    color->g = (rgb>>8)&0xff;
    color->b = rgb&0xff;
}

int getColor(struct color* color) {
    return color->r<<16|color->g<<8|color->b;
}

关于c++ - C中移位运算符的真正强大用法是什么? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38521852/

10-11 20:09