逍遥自在学C语言 位运算符 "|" 的5种高级用法
前言
在上一篇文章中,我们介绍了&运算符的高级用法,本篇文章,我们将介绍| 运算符的一些高级用法。

一、人物简介
- 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。

- 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

二、将两个字节合并成一个16位整数
#include <stdio.h>
int main()
{
unsigned char lowByte = 0x12; // 0001 0010
unsigned char highByte = 0x34; // 0011 0100
unsigned short result = (highByte << 8) | lowByte; // 0011 0100 0001 0010
printf("合并结果为 %04x\n", result); // 输出: 0x3412
return 0;
}

三、将一个字节的低4位和高4位交换
#include <stdio.h>
int main()
{
unsigned char data = 0xab; // 1010 1011
data = (data << 4) | (data >> 4); // 1011 1010
printf("交换结果为 %02x\n", data); // 输出:0xba
return 0;
}

四、将一个字节中的某些位置1
#include <stdio.h>
int main()
{
int x;
printf("请输入一个数:");
scanf("%d", &x);
printf("\n第4位置1后,这个数变为 %d\n", x | 0b1000);
return 0;
}

五、将一个字节中的某些位置0
#include <stdio.h>
int main() {
int x;
int a = 0b1000;
printf("请输入一个数:");
scanf("%d", &x);
printf("\n第4位置0后,这个数变为 %d\n", (x | a) - a );
return 0;
}

六、将低位连续的0变为1
#include <stdio.h>
int main()
{
int x;
printf("请输入一个数:");
scanf("%d", &x);
printf("\n低位连续的0变为1,这个数变为%d\n", x | (x-1) );
return 0;
}


小结
通过这篇文章,我们学会了用位运算符|的5种高级用法
1、将两个字节合并成一个16位整数
2、将一个字节的低4位和高4位交换
3、将一个字节中的某些位置1
4、将一个字节中的某些位置0
5、将低位连续的0变为1
在下一篇文章中,我们将介绍位运算符^的一些高级用法。
逍遥自在学C语言 位运算符 "|" 的5种高级用法的更多相关文章
- C语言位运算符:与、或、异或、取反,左移和右移
C语言位运算符:与.或.异或.取反.左移和右移 个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. ,则该位的结果值为1,否则为0 | ...
- C语言位运算符:与、或、异或、取反、左移和右移
语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符 ...
- 【转】C语言位运算符:与、或、异或、取反、左移与右移详细介绍
转载自:http://www.jb51.net/article/40559.htm,感谢原作者. 以下是对C语言中的位运算符:与.或.异或.取反.左移与右移进行了详细的分析介绍,需要的朋友可以过来参考 ...
- c语言位运算符
C语言既具有高级语言的特点,又具有低级语言的功能. 所谓位运算是指进行二进制位的运算. C语言提供的位运算: 运算符 含义 & 按位与 | 按位或 ∧ 按位异或 ∽ ...
- C语言位运算符:与、或、异或、取反、左移与右移详细介绍
位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型 ...
- C语言位运算符详解
原文链接:https://www.cnblogs.com/911/archive/2008/05/20/1203477.html 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题 ...
- 基础知识复习(一)——C语言位运算符详解
常用的位运算符:与(&),取反(~),或(|),异或(^),左移(«),右移(») 1. 与(&)操作符,按位与,全为1 时,结果取1 11001 &10011 结果:1000 ...
- C语言--位运算符
一.位运算符 1.按位与:& 1> 功能 * 只有对应的两个二进制位为1时,结果位才为1,否则为0 * 举例:10用二进制表示为1010, 7用二进制表示为0111.对两个数值进行&a ...
- 重学C语言---05运算符、表达式和语句
一.循环简介 实例程序 /*shoes1.c--把一双鞋的尺码变为英寸*/#include <stdio.h>#define ADJUST 7.64#define SCALE 0.325 ...
- C语言位运算符及作用:与、或、异或、取反、左移和右移
一.& 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0应用:(1)清零 若想对一个存储单元清零,即使其全部二进制位为0,只要找一个二进制数,其中各个位符合一下条件:原来的数 ...
随机推荐
- Spring 核心容器 IOC
目录 1. BeanFactory 2. BeanDefinition 3. BeanDefinitionReader 4 . Web IOC 容器初体验 一 .BeanFactory Spring ...
- 5vue 样式绑定
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- C# DevExpress gridview 字符串尾部带数字如何排序
我们经常遇到这样的问题,字符串尾部带数字,如何正确排序; 首先设置GridView ,Columns 的相关列,设置属性中,SortMode为Custom 解决思路,把字符串尾缀数字,分离出来.先比较 ...
- Java简单认识及环境下载
Java的特性和优势 简单性 面向对象 可移植性 跨平台性 write once run anywhere 高性能 分布式 动态性 反射 多线程 安全性 健壮性 Java三大版本 JavaSE:标准版 ...
- Servlet(三)
dom4j 元素对象获取指定子元素 element("名字") ServletConfig: 1.在Servlet运行时,需要获取servlet的配置信息 可以使用servlet ...
- Java中的方法增强
A:在不影响业务情况下,增强一个方法有几种方法呢? B:3种! A:哪三种呀? 一.继承类来重写方法: 1.要可以获取这个类的构造: class Man{ public void run(){ Sys ...
- thread互斥测试
thread互斥测试 实践代码 #include <stdio.h> #include <stdlib.h> #include <pthread.h> //linu ...
- bytes转化为字典
import requestsurl='https://su.ke.com/api/listtop?type=resblock&resblock_id=2311062653496924& ...
- Spring设计模式——原型模式
原型模式 原型模式(Prototype Pattern),是指原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象. 原型模式主要适用于以下场景: 类初始化消耗资源较多 使用new生成一个对象 ...
- 关于IDEA新建Maven项目时,会卡死,无法实现新建问题的具体解决
对于问题的描述 在进行新建项目时,突然就出现了选择好一切之后,点击CREATE后,直接卡死停滞(对于一个菜菜来说,只能通过电脑重启来改变一下它无法动弹的状态了) 对于该问题的解决 解决的话,具体步骤如 ...