IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言——位运算 -> 正文阅读

[C++知识库]C语言——位运算

C语言——位运算

1.按位取反(二进制反码)~:
~运算符把二进制形式1改为0,0改为1;
例如:~(11110000)=00001111;
代码示例:

#include<stdio.h>
int main(void){
    char a = 240;//二进制11110000 
    char b = ~a;//二进制00001111 
	printf("%d",b);
	return 0;
 } 

输出结果:
在这里插入图片描述

2.按位与&
只有两个运算对象的二进制位都为1,结果才为1。或者可以说有一个是0,结果就为0
例如:(10010011)&(00111101)=00010001;
代码示例:

#include<stdio.h>
int main(void){
    char a = 147;//二进制10010011 
	char b = 61;//二进制00111101 
    char c = a&b;//二进制00010001 
	printf("%d",c);
	return 0;
 } 

输出结果:
在这里插入图片描述

3.按位或|
只有两个运算对象的二进制位都为0,结果才为0。或者可以说有一个是1,结果就为1
例如:(00010011)|(00111101)=00111111;
代码示例:

#include<stdio.h>
int main(void){
    char a = 19;//二进制00010011 
	char b = 61;//二进制00111101 
    char c = a|b;//二进制00111111
	printf("%d",c);
	return 0;
 } 

输出结果:
在这里插入图片描述

4.按位异或^
两个运算对象的二进制位相同,则运算结果为0,不相同则运算结果为1。
例如:(00010011)^(00111101)=00101110
代码示例:

#include<stdio.h>
int main(void){
    char a = 19;//二进制00010011 
	char b = 61;//二进制00111101 
    char c = a^b;//二进制00111111
	printf("%d",c);
	return 0;
 } 

输出结果:
在这里插入图片描述

5.移位运算符
①左移<<:
将运算对象的二进制位每一位的值向左移动指定的位数,运算对象移出左末端位的值丢失,用0填充空出的位置。
例如:(01010010)<<2=(01001000)
代码示例:

#include<stdio.h>
int main(void){
    char a = 82;//二进制01010010
	char b = a<<2;//二进制01001000
	printf("%d",b);
	return 0;
 } 

输出结果:
在这里插入图片描述

②右移>>:
将运算对象的二进制位每一位的值向右移动指定的位数,运算对象移出右末端位的值丢失,用0填充空出的位置。
例如:(01010010)>>2=(00010100)
代码示例:

#include<stdio.h>
int main(void){
    char a = 82;//二进制01010010
	char b = a>>2;//二进制00010100
	printf("%d",b);
	return 0;
 } 

输出结果:
在这里插入图片描述

运用位运算解题实例:
在实验室中,H是最神秘的一个,在一次实验室聚会上,学长发送x(奇数)个礼物,每个人都得到了学长的礼物且都是偶数个,唯有H是奇数个,每个成员得到的礼物都有相同的编号,请找出H礼物的编号,(礼物编号不超过50)
输入
第一行:礼物的个数x
第二行:x个礼物的编号
输入样例1:
7
1 1 2 2 3 3 4 输出:4
输入样例2:
11
1 2 3 4 5 5 4 3 8 2 1 输出:8
利用位运算解决:

#include<stdio.h>
int main(void){
int n;
scanf("%d",&n);
int b = 0,a;int i;
for(i = 0;i<n;i++){
	scanf("%d",&a);
	b = a^b;
}
printf("%d",b);
return 0;
} 

样例一运行结果:
在这里插入图片描述

样例二运算结果:
在这里插入图片描述

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:12:56  更:2021-11-10 12:15:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 5:56:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码