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语言基础12---位运算 -> 正文阅读

[C++知识库]C语言基础12---位运算

学习网站:C语言网.
编译器:Red Panda Dev-C++



1.位运算符表

1

#include <stdio.h>
int main(){
	int numberOne,numberTwo;
	
	// 13左移两位过程(4个字节): 
	// 移位前:13==>0000 0000 0000 0000 0000 0000 0000 1101
	// 左移后:0000 0000 0000 0000 0000 0000 0011 0100==>52 
	
	numberOne = 13 << 2;	// 左移N位,乘以2的N次方; 
	numberTwo = 25 >> 3;	// 右移N位,除以2的N次方; 
	
	printf("numberOne = %d,numberTwo = %d\n", numberOne, numberTwo);
	return 0;
}

2.按位与&运算符

// 1.同为1时,结果为1;
// 2.按位与运算符作用:
// 2.1 清零:对某一个数与0进行按位与,最终全部位变为0,起到清零作用;
// 2.2 取指定位:如取第1-3位表示xxx,则让原数值与数字7(0111)进行按位与运算;
// 2.3 判断奇偶:数字的奇偶取决于二进制位的最低一位是1还是0,与1按位与运算,判断是1是0即可判断奇偶;
/*
实例说明:3和5按位与运算
3==>0000 0000 0000 0000 0000 0000 0000 0011
5==>0000 0000 0000 0000 0000 0000 0000 0101
&==>---------------------------------------
	0000 0000 0000 0000 0000 0000 0000 0001==>十进制1
*/
#include <stdio.h>
int main(){
	int numberOne;
	int numberTwo;
	int numberThree;
	
	numberOne = 3 & 5;	// 见分析过程,其他数同理; 
	numberTwo = 0 & 1;
	numberThree = 5 & 5;
	
	printf("The result of 3 & 5 = %d\n", numberOne);
	printf("The result of 0 & 1 = %d\n", numberTwo);
	printf("The result of 5 & 5 = %d\n", numberThree);
	
	return 0;
}

3.按位或|运算符

// 1.两个对应二进制位有一个为1,结果为1;
// 2.按位或运算符作用:对一个数字指定位置为1;
// 如某个数字的第七位表示开关,原先为0,需要改为1的状态,可以将这个数字与64(0100 0000)按位或,即可得到第七位变为1,其余为的值不变;
/*
实例说明:8和7的按位或运算
8==>0000 0000 0000 0000 0000 0000 0000 1000
7==>0000 0000 0000 0000 0000 0000 0000 0111
|==>---------------------------------------
	0000 0000 0000 0000 0000 0000 0000 1111==>15
*/
#include <stdio.h>
int main(){
	int numberOne;
	int numberTwo;
	int numberThree;
	
	numberOne = 8 | 7;
	numberTwo = 8 | 0;		// 0(... 0000 0000)
	numberThree = 8 | 15;	// 15(... 0000 1111)
	
	printf("The result of 8 | 7 = %d\n", numberOne);
	printf("The result of 8 | 0 = %d\n", numberTwo);
	printf("The result of 8 | 15 = %d\n", numberThree);
	
	return 0;
}

4.按位异或^运算符

// 1.按位异或:相异,结果为1;相同,结果为0;
// 2.按位异或作用
// 2.1 指定位数翻转:如想对某个数字低4位进行翻转,可以与15(0000 1111)进行按位异或运算;
// 2.2 与0异或还是原值;
// 2.3 交换两个数字;
/*
实例分析:15和16按位异或运算
15==>0000 0000 0000 0000 0000 0000 0000 1111
16==>0000 0000 0000 0000 0000 0000 0001 0000
^ ==>---------------------------------------
	 0000 0000 0000 0000 0000 0000 0001 1111==>31
*/
#include <stdio.h>
int main(){
	int numberOne;
	int numberTwo;
	
	numberOne = 15 ^ 16;	
	numberTwo = 15 ^ 0;
	
	printf("The result of 15 ^ 16 = %d\n", numberOne);
	printf("The result of 15 ^ 0 = %d\n", numberTwo);
	
	return 0;
} 
#include <stdio.h>

int swap(int *a,int *b){
	*a = *a ^ *b;
	*b = *b ^ *a;
	*a = *a ^ *b;
}

int main(){
	int a = 3;
	int b = 5;
	
	//printf("Initial a = %d.Initial b = %d\n",a,b);
	swap(&a, &b);	// 交换a和b的值;
	printf("a = %d b = %d\n",a,b);
	return 0;
}

5.按位取反~运算符

// 1.按位取反:对数值的二进制位进行取反;
#include <stdio.h>

int main(){
	// 把下列数的二进制写出来,然后取反理解; 
	unsigned int numberOne = 1;		
	int numberTwo = 1;	
	int numberThree = 0;
	int numberFour = 10;
	
	printf("~1 = %u\n", ~numberOne);
	printf("~1 = %d\n", ~numberTwo);
	printf("~0 = %d\n", ~numberThree);
	printf("~10 = %d\n", ~numberFour);
	
	return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章           查看所有文章
加:2022-05-08 07:51:17  更:2022-05-08 07:54:16 
 
开发: 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年5日历 -2024/5/21 1:25:38-

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