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