首页 > 解决方案 > 如何按位切断无符号长整数中的第一位?

问题描述

我有m = 0x401e000000000000,我想得到f = 0xe000000000000。使用按位运算符,我将如何在 C 中做到这一点?我用了 f = (m & 0xFFFFFFFFFFFFF);

但我只得到0。

标签: chexbitwise-operators

解决方案


IDEOne中运行时,它可以工作

#include <stdio.h>

int main(void) {
  unsigned long m = 0x401e000000000000;
  unsigned long f = m & (0xFFFFFFFFFFFFF); // Expect value = 0xe000000000000.
  
  printf("Result f = 0x%0lX\n", f);
  
    return 0;
}

输出

Success #stdin #stdout 0s 5416KB
Result f = 0xE000000000000

推荐阅读