我需要了解此cpp代码背后的逻辑

时间:2020-09-17 02:48:15

标签: c++

int x = 25;
unsigned int g = x & 0x80000000;

此代码如何读取x地址中的最高有效位?对0x80000000或二进制1000 0000 0000 0000的引用完成了该任务,还是其他原因?

1 个答案:

答案 0 :(得分:-2)

对于char,最高有效位通常是根据Two's Complement的符号位,因此应为:

 char x = 25;
 unsigned int msb = x & (1 << 6);

其中(1 << 6)表示从0开始计数的6位或从1开始计数的7位。它是倒数第二位,等效于0x40

由于250b00011001,所以您将不会有任何设置。您需要的值> = 64。