C语言中移位、逻辑运算符的简单应用

&运算符
一、 计算二进制中1 的个数比如: 15       0000 1111       4 个 1
要求其数字的存储方式为int

int count_one_bits(unsigned int value)//计算1的位数函数
{
	int count;
	count=0;
	while(value)
	{
		count++;
		value=value&(value-1);//每&一次,减少一个二进制数中的“1”的个数;
	}
	return count;
}

&运算符和>>运算符的联合应用

二、获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列。

#include <stdio.h>

#include <stdlib.h>

int main()

{

int i,j;

int num;//定义输入变量

int a[16],b[16];//定义存放奇数位和偶数位的数组

printf("请输入一个十进制数字:");

scanf("%d",&num);

for (i = 0 ,j = 0; j < 32; i++, j=j+2) //获取二进制数列的奇数位

{

a[15-i] = ( num>>j )&1;

}

printf("从高位到低位奇数位分别为:");

for (i = 0; i < 16; i++) //从高位到低位输出其二进制奇数位

{

printf("%d ",a[i]);

}

for (i = 0 ,j = 1; j < 32; i++, j=j+2) //获取二进制数列的偶数位

{

b[15-i] = ( num>>j )&1;

}

printf("\n从高位到低位偶数位分别为:");

for (i = 0; i < 16; i++) //从高位到低位输出其二进制偶数位

{

printf("%d ",b[i]);

}

system("pause");

return 0;

}

| 运算符

三、判断名次是否连续

/*将名次对应一个数中的二进制位*/

int ret = 0, flag = 0;
ret |= (1 << (a - 1));
ret |= (1 << (b - 1));
ret |= (1 << (c - 1));
ret |= (1 << (d - 1));
ret |= (1 << (e - 1));
while (ret)
{
	if (0 == ret % 2)
	{
		flag = 1;
	}
	ret / = 2;
}
if (0 == flag)
{
	printf("比赛的名次为:\n");
	printf("a=%d\nb=%d\nc=%d\nd=%d\ne=%d\n", a, b, c, d, e);
}

四、寻找两个int(32位)整数m和n的二进制表达中,有多少个位(bit)不同

int different_bits(int num_1, int num_2)
{
	int count = 0;
	for (int i = 0; i < 32; i++)
	{
		if (((num_1 >> i) & 1) ^ ((num_2 >> i) & 1))
		{
			count++;
		}
	}
	return (count);
}

五、将一个无符号数的二进制数逆置

unsigned int  reverse_bit(unsigned int num)
{
	int i = 0;
	unsigned int ret = 0;
 	for (i = 0; i < 32; i++)
	{
		ret<<=1;
		ret |= ((num >> i) & 1);
	}
	return (ret);
}

六、求两个数的平均值,无溢出

int average(int a, int b)
{
	return((a & b) + ((a ^ b) >> 1));
}

七、找出一组数据中单独出现的数字

int find_only(int arr[], int size)
{
	for (int i = 1; i < size; i++)
	{
		arr[0] ^= arr[i];
	}
	return (arr[0]);
}
时间: 2024-08-07 07:20:44

C语言中移位、逻辑运算符的简单应用的相关文章

C语言去除数组中重复的字符简单例子

#include <stdio.h> int main(void){ int a[10]={1,2,3,3,4,5,1,3,5,6}; int i,j; int zieo=0; for(i=0;i<10;i++) for(j=i+1;j<10;j++) { if(a[i]==a[j]) { a[j]=0; } } for(i=0;i<10;i++) { if(a[i]!=zieo) { printf("%d\t",a[i]); } } printf(&qu

R语言中最简单的向量赋值方法

R语言中最简单的向量赋值方法简介: 1. 生成等差数列的向量x x <- 1:10 #将x向量赋值为1 2 3 4 5 6 7 8 9 10 结果为 > x [1] 1 2 3 4 5 6 7 8 9 10 2. 将x的值全部修改成0 x[] <- 0 #非常简洁的赋值方法,建议使用 x[1:length(x)] <- 0 #不建议使用的赋值方法 结果为: > x[] <- 0 > x [1] 0 0 0 0 0 0 0 0 0 0 3.使用seq函数 x <

c语言中继承和多态的简单实现

C语言本身是不支持继承和多态的,但其实在 C 的世界里,有一套非常有名的面向对象的框架,用的也非常广,那就是 GObject,它是整个图形界面开发库 GTK 的基石,在IBM developerWorks上有一篇很好的文章介绍 GObject<GObject对象系统>.另外,在 Linux 内核里面也大量使用了面向对象的思想,比如虚拟文件系统,设备驱动等模块,在 lwn上有两篇文章就讲到了内核中的面向对象,详细请看:<Object oriented design patterns in

简单讲解C语言中宏的定义与使用

宏定义是预编译功能的一种, 预编译又称为预处理, 是为编译做的预备工作的阶段.处理#开头的指令, 比如拷贝 #include 包含的文件代码,#define宏定义的替换,条件编译等. 使用宏定义的好处:使用宏定义的好处:可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改.例如 π 这个常量,我们有时候会在程序的多个地方使用,如果每次使用都重新定义,一来比较麻烦,二来容易出错,所以我们可以把 π 做成宏定义来使用.   语法说明: (1)宏名一般用大写 (2)使用宏可提高程序的通用性

c语言中字符串的匿置 超级简单

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<string.h> void main() { char * src = "hello,world"; printf("%d", src[10]); char *dest = NULL; //开辟内存空间 然后多开辟一个用来存储字符串的结束符 dest= (char *)mal

Java语言中学习数组、运算符、流程控制的一些理解

一.数组 1.数组的概念及作用 数组是相同数据类型的元素的集合:   数组本身是引用数据类型,即对象.但是数组可以存储基本数据类型,也可以存储引用数据类型. 例如: int [] a = new int [] {1,2,3,4,5,6,}; String [] s = new String [] {"小兔","小小兔","小小小兔",} : Employee [] e = Employee [10];(Employee是自定义类). 2.数组的声

C语言中容易被忽略的细节(第一篇)

前言:本文的目的是记录C语言中那些容易被忽略的细节.我打算每天抽出一点时间看书整理,坚持下去,今天是第一篇,也许下个月的今天是第二篇,明年的今天又是第几篇呢?--我坚信,好记性不如烂笔头. 1. 在C语言中,符号之间的空白(包括空格符.制表符或换行符)将被忽略.但一个符号的中间不能有空白,否则可能被解释为另一个或几个符号.以下两种写法是等价的: //写法1 if (x > big) big = x; //写法2 if ( x > big ) big = x ; 2.编译器将程序分解为符号的&q

C语言中的运算符号

C语言中的符号--具体用法问度娘 运算符的种类 语言的运算符可分为以下几类: 1 算术运算符 用于各类数值运算.包括加(+).减(-).乘(*).除(/).求余(或称模运算,%).自增(++).自减(--)共七种. 2.关系运算符 用于比较运算.包括大于(>).小于(<).等于(==). 大于等于(>=) .小于等于(<=)和不等于(!=)六种. 3.逻辑运算符 用于逻辑运算.包括与(&&).或(||).非(!)三种. 4.位操作运算符 参与运算的量,按二进制位进行

Java语言中的----运算符

day05 Java语言中的----运算符 一.运算符概述: 运算符的使用在每一门开发语言中都会使用到,在不同的语言中也会有不同的使用规则.通过运算符我们可以联想到MySQL数据库中的运算符,这些都是差不多的,可能有些在使用上是不一样的.下面就来看看Java中的运算符. 二.运算符: 1.算术运算符: 主要包含:加.减.乘.除.取余(%).自加(++).自减(--) 2.赋值运算符: 就是等号(=) 3.位运算符: 主要包含:&.|.~.^.<<.>>.>>&g