【C语言】编写函数,将一个数的指定位置置0或置1

//编写函数,将一个数的指定位置置0或置1
#include <stdio.h>
unsigned int set_bit(unsigned int num, int pos, int flag)
{
	int n = 1;
	n = n << (pos - 1);    //将n的第pos位置1,其它全为0
	if (flag == 0)
	{
		num = num&(~n);
	}
	else if (flag == 1)
	{
		num = num | n;
	}
	else
		printf("flag error\n");
	return num;
}
int main()
{
	printf("%d\n", set_bit(3,1,0));     //2
	printf("%d\n", set_bit(4, 2, 1));   //6
	printf("%d\n", set_bit(15, 5, 1));  //31
	return 0;
}
<img src="http://img.blog.csdn.net/20150630155139259?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZG91ZG91d2ExMjM0/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center"  />
时间: 2024-08-10 17:17:28

【C语言】编写函数,将一个数的指定位置置0或置1的相关文章

【c语言】编写一个函数,这个函数可以将一个整数的指定位置1或置0

// 编写一个函数,这个函数可以将一个整数的指定位置1或置0 #include <stdio.h> int set_bit(int a, int pos, int flag) { int b = 1 << (pos - 1); if (flag == 0) { a &= ~b; } else { a |= b; } return a; } int main() { printf("%d\n", set_bit(2, 1, 1));// 3 printf(

【C语言】请编写实现以下功能函数:实现对一个8bit数据(unsigned char)的指定位(例如第8位)的置0或置1操作,并保持其他位不变

/*请编写实现以下功能函数:实现对一个8bit数据(unsigned char)的指定位(例如第8位)的置0或置1操作,并保持其他位不变. 函数原型:void bit_set(unsigned char *p_date,unsigned char position,int flag). 函数参数说明:p_date是指定数据源,position是指定位(1~8),flag是置0或置1. */ #include <stdio.h> void bit_set(unsigned char *p_dat

【C语言】实现对一个8bit数据的指定位的置0或者置1操作,并保持其他位不变。

给定函数原型:void bit_set(unsigned char *p_data,unsigned char positin,int flag) 参数说明:p_data是指定的源数据:position是指定位(取值范围为1~8):flag表示置0还是置1操作. #include <stdio.h> void bit_set(unsigned char *p_data, unsigned char position, int flag) { int a = 1<<(position

【c语言】实现对一个8bit数据(unsigned char 类型)的指定位(例如第n位)置0或者置1操作,并保持其他位不变

// 实现对一个8bit数据(unsigned char 类型)的指定位(例如第n位)置0或者置1操作,并保持其他位不变 #include <stdio.h> void bit_set(unsigned char *p_data, unsigned char position, int flag) { unsigned c; unsigned char a = 1; a = a << (position - 1); if (flag == 1) { *p_data = *p_dat

使用C语言在Win控制台中实现指定位置输出

在古老的Turbo C中有个GotoXY可以让你在指定坐标中输出文字,可恨的是我看过的C语言书籍,有一半都是关于它的.我现在用着Windows系统,不可能还让我去写着DOS程序啊,起码也得从Win控制台程序开始啊.于是搜罗N多资料,终于找到一个Windows控制台程序API可以实现跳转到指定位置中进行输出. #include <stdio.h> #include <Windows.h> #include <conio.h> #include <stdlib.h&g

用c++语言编写函数 int index(char *s,char * t),返回字符串t在字符串s中出现的最左边的位置,如果s中没有与t匹配的子串,则返回-1。类似于索引的功能。

首先,分析一下程序的思路: 1:从s的第i个元素开始,与t中的第1个元素匹配,如果相等,则将s的第i+1元素与t中的第2个元素匹配,以此类推,如果t所有元素都匹配,则返回位置i;否则,执行2; 2: i++;如果s的第i个元素是'\0',即字符串的结束符,停止执行:否则,重复步骤1. 接着,给出这个程序: #include <iostream>                                    //存放了输入输出流#include <cstdio>      

用C语言编写函数,实现strlen计算字符串长度的功能

本文介绍三种方法: 1.循环计数法,(设置一个计数器). 2.递归法,(函数调用自身进行计算) 3.指针-指针法,(库函数使用的是此方法) 现在列入程序: 方法1: /* 计数法 */ int my_strlen(char *p) { int number = 0; while (*p) { number++; p++; } return number; } 方法2: /* 递归法 */ int my_strlen(char *str1) { if (*str1 != '\0') { str1+

用C语言编写函数实现一个整数计算机,程序接受三个参数,第一个参数为操作项,后两个参数为操作数。

函数功能: 使用main函数的参数,实现一个整数计算机,程序可以接受三个参数,第一个参数"-a"选项执行加法,"-s"选项执行减法,"-m"选项执行乘法,"-d"选项执行除法,后面两个参数为操作数. 思考: 三个参数中两个操作数不用处理,直接传入即可,而对于第一个操作数就需要处理了,以保证传入的参数是"'-a','-s','-m','-d'",以便于处理计算,第一步将操作符号转化为上述赋好,然后将参数以及操

c语言:实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定

实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定, 输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表. 程序: #include<stdio.h> void mul(int n)//multiplication 乘法 { int i, j; for (i = 1; i <= n; i++) { for (j = 1; j <= i; j++) { printf("%d*%d=%-2d  ", i, j, i*j); //其中%2d中的2表示