美文网首页
C++位运算技巧之左边i位取反

C++位运算技巧之左边i位取反

作者: 疋瓞 | 来源:发表于2022-02-03 23:03 被阅读0次

1、环境配置:

  • 系统:win10
  • 编程语言:C
  • 编译器:DevC++

2、问题描述:

写出函数中缺失的部分,使得函数返回值为一个整数,该整数的左边i位是n的左边i位取反,其余位和n相同
请使用【一行代码】补全bitManipulation3函数使得程序能达到上述的功能

注:以二进制数最右边为第0个数。

#include <iostream>
using namespace std;

int bitManipulation3(int n, int i) {
// 在此处补充你的代码
    return (-1<<(32-i))^n;
}

int main() {
    int t, n, i;
    cin >> t;
    while (t--) {
        cin >> n >> i;
        cout << bitManipulation3(n, i) << endl;
    }
    return 0;
}

分析:

  • 0和1异或是1,0和0异或是0;所以0和任意二进制数异或是二进制数本身。
  • 1和1异或是0,1和0异或是1;所以1和任意二进制数异或是二进制数取反。

总结:

  • 这里还需要理解的是:“左移补充零,右移补充符号位”。这是c++中位运算符左移和右移的规则。

相关文章

  • C++位运算技巧之左边i位取反

    1、环境配置: 系统:win10 编程语言:C 编译器:DevC++ 2、问题描述: 写出函数中缺失的部分,使得函...

  • 强大的位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作位取反运算符.png 位与运算符 位与运算符(&)可以...

  • 编程填空:左边i位取反

    描述 写出函数中缺失的部分,使得函数返回值为一个整数,该整数的左边i位是n的左边i位取反,其余位和n相同请使用【一...

  • swift-位运算符

    1. 位取反运算符( ~ ) 位取反运算符(~ )是对所有位的数字进行取反操作 2. 位与运算符( &) 位与运算...

  • Swift - 位运算符

    位运算符 取反运算 位取反运算符(~) 是对所有位的数组进行取反 0000 1111 取反操作后变成 1111 0...

  • 位运算符

    位取反运算符 位取反运算符(~)是对所有位的数字进行取反操作 位与运算符 位与运算符(&)可以对两个数的比特位进行...

  • 举例说明OC中的位运算

    OC中的位运算和C/C++语言的位运算是一样的。一般有 &(按位与),| (按位或),~ (按位取反),<<(左移...

  • 位运算符

    位取反运算符 取反翻运算符 ~ 是对所有位的数字进行取反操作0 变 11 变 0 位与运算符 位与运算符 & 可以...

  • 039:编程填空:左边i位取反

    039:编程填空:左边i位取反 总时间限制: 1000ms 内存限制: 1024kB描述写出函数中缺失的部分,使得...

  • OC中的位运算

    OC中的位运算和C/C++里的是一样的,&(按位与),| (按位或),~ (按位取反),<<(左移) ,>>(右移...

网友评论

      本文标题:C++位运算技巧之左边i位取反

      本文链接:https://www.haomeiwen.com/subject/ktpjkrtx.html