编程填空:第i位替换

描述

写出函数中缺失的部分,使得函数返回值为一个整数,该整数的第i位和m的第i位相同,其他位和n相同。

请使用【一行代码】补全bitManipulation1函数使得程序能达到上述的功能

#include <iostream>
using namespace std;

int bitManipulation1(int n, int m, int i) {
// 在此处补充你的代码
}

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

输入第一行是整数 t,表示测试组数。
每组测试数据包含一行,是三个整数 n, m 和 i (0<=i<=31)输出对每组输入数据,每行输出整型变量n变化后的结果样例输入

1
1 2 1

样例输出

3

提示二进制的最右边是第0位

源代码:

#include <iostream>
using namespace std;

int bitManipulation1(int n, int m, int i) {
return n - (n & (1 << i)) + (m & (1 << i));
}

int main() {
	int n, m, i, t;
	cin >> t;
	while (t--) {
		cin >> n >> m >> i;
		cout << bitManipulation1(n, m, i) << endl;
	}
	return 0;
时间: 2024-10-02 08:03:48

编程填空:第i位替换的相关文章

编程填空:左边i位取反

编程填空:左边i位取反 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  1024kB 描述 写出函数中缺失的部分,使得函数返回值为一个整数,该整数的左边i位是n的左边i位取反,其余位和n相同 请使用[一行代码]补全bitManipulation3函数使得程序能达到上述的功能 #include <iostream> using namespace std; int bitManipulation3(int n, int i) { // 在此处补充你的代码 } int main

IAR 编程器 STM8S 脚位的位定义

多余的就不说了,都明白,为了方便操作,我们常常会用到类似于LED1 = 1来点亮一个灯,此处LED1就是一个脚位,它当然不是系统自带,一般都是我们宏定义一个脚位. 昨天刚接触IAR这个编程器,想用类似的方法来操作,但是类似51内核操作(keil中写法) sbit   LED1  PA0  ; STVD 中的  _Bool   PA0_OUT   @PA_ODR:0; 这是头有点大,一方面想着操作能方便点,一方面又不想折腾太多时间. 经过一番折腾,最后还是选择通过位操作结合宏定义来操作,具体如下:

C编程中的8位、16位、32位整数的分解与合并

在单片机的编程中对于8位.16位.32位整数的分解与合并用的比较多,今天做了简要学习,后面还需要加以总结. 练习在VC++6.0编程环境中进行,源程序:#include <stdio.h>#include "string.h" int main(int argc, char argv[]){ unsigned int Data_Uint32=0x12345678;unsigned short int Data_Uint16_1,Data_Uint16_2;unsigned

[编程珠玑]如何使用位逻辑来实现位向量

编程珠玑开篇的一道题目是这样的: 如何使用位逻辑运算(如与.或.移位)来实现位向量? 一.何为位向量? 在许多情况下(如对象为满足或不满足某条性质的情况),用一个二进制位就足够表示一个对象了.但是,不能用一个变量名直接表示一个位(不存在单独为一位的数据类型).于是,就考虑将多个位组成一个基本数据类型,通过对这个基本数据类型的操作,达到使用位的方法.同时,为了方便,把由位组成的基本数据类型组成数组,这样,就可以对一定范围的位数据集合进行操作.我们把这种形式的数据结构称为位向量. 接下来,再考虑一点

编程填空:第i位取反

描述 写出函数中缺失的部分,使得函数返回值为一个整数,该整数的第i位是n的第i位取反,其余位和n相同 请使用[一行代码]补全bitManipulation2函数使得程序能达到上述的功能 #include <iostream> using namespace std; int bitManipulation2(int n, int i) { // 在此处补充你的代码 } int main() { int t, n, i; cin >> t; while (t--) { cin >

对硬件编程中常用的位运算概述

位运算就是将对应的数值转化为二进制然后按位进行相应的运算.(好吧,这个概念是我自己的理解...) 下面的叙述指示结合个人的经历与理解,肯定是不够全面.甚至不够准确的,只是希望抛砖引玉,同时也作为自己对位运算这一块的一个简单总结. 位运算主要包括:位与(&).位或(|).位取反(~).位异或(^).左移(<<).右移(>>)六种下面分别介绍. 1.  位与(&). 这个和逻辑运算符 与(&&) 是不是长得像?他们的功能也异曲同工!运算的两位同时为1时结

C#高级编程五十七天----位数组

位数组 如果需要处理很多位,就可以使用BitArray类和BitVector32.BitArray位于命名空间System.Collections中. BitVector32位于命名空间System.Collections.Speciallized. BitArray类 类BitArray是一个引用引用类型,包含一个int数组,没32位使用一个新整数.和bool类型的数组bool[]差不多 案例: using System; using System.Collections; using Sys

北京大学C++程序设计coursera课程第四周编程填空题3

题目 填空题-3 1 point possible (graded) 总时间限制: 1000ms 内存限制: 65536kB 描述 写一个二维数组类 Array2,使得下面程序的输出结果是: 0,1,2,3, 4,5,6,7, 8,9,10,11, next 0,1,2,3, 4,5,6,7, 8,9,10,11, 程序: #include <iostream> #include <cstring> using namespace std; // 在此处补充你的代码 int mai

程序设计实习 02 第i位替换

#include <iostream> using namespace std; int bitManipulation1(int n, int m, int i) { return ((m>>i)&1) == 1? (n|(1<<i)) : (n&(~(1<<i))); //注意格式 } int main() { int n, m, i, t; cin >> t; while (t--) { cin >> n >