C函数int firstBitEqualsLast(int x),如果bit_0等于bit_31,则返回1,否则返回0

u1ehiz5o  于 2023-01-25  发布在  其他
关注(0)|答案(1)|浏览(130)

合法运算符!~&^|〈〈〉〉
我试过这个代码:

int lhs = ((x << 30)>>30);
int rhs = (x >> 30);
return (~(lhs ^ rhs));

但产出并不总是如预期的那样

ee7vknir

ee7vknir1#

1.我不知道任何数据类型的RHS是位30。但是,32位int的RHS是位31,因此您可以尝试使用该值。
1.执行位操作时,应始终使用unsigned类型。

#include <stdint.h>

uint32_t lhs = ((uint32_t)(value & 1));
uint32_t rhs = ((uint32_t)((value >> 31) & 1));

return lhs == rhs;

相关问题