合法运算符!~&^|〈〈〉〉我试过这个代码:
int lhs = ((x << 30)>>30); int rhs = (x >> 30); return (~(lhs ^ rhs));
但产出并不总是如预期的那样
ee7vknir1#
1.我不知道任何数据类型的RHS是位30。但是,32位int的RHS是位31,因此您可以尝试使用该值。1.执行位操作时,应始终使用unsigned类型。
int
unsigned
#include <stdint.h> uint32_t lhs = ((uint32_t)(value & 1)); uint32_t rhs = ((uint32_t)((value >> 31) & 1)); return lhs == rhs;
1条答案
按热度按时间ee7vknir1#
1.我不知道任何数据类型的RHS是位30。但是,32位
int
的RHS是位31,因此您可以尝试使用该值。1.执行位操作时,应始终使用
unsigned
类型。