C/C++:与运算、或运算、异或运算、指针

article/2025/9/28 10:54:35

前言忘记进制的同学先看这里:

十进制数,没有前缀
二进制数,前缀是0b
八进制数,前缀是0o
十六进制数,前缀是0xlet decimalInteger = 17
let binaryInteger = 0b10001       // 二进制的17
let octalInteger = 0o21           // 八进制的17
let hexadecimalInteger = 0x11     // 十六进制的17

一、与运算

两个都是1,结果就为1;&运算通常用于二进制取位操作;
一般用来:

  1. 判断奇偶
  2. 取余

1、判断奇偶

一个数 &1的结果就是取二进制的最末位。
这可以用来判断一个整数的奇偶,二进制的最末位为0表示该数是偶数,最末位为1表示该数为奇数
5 & 1 = 0b101 & 0b001 = 0b 001 = 1,奇数,效率比 5%2 快多了

2、取余

比如:11 % 4 = 3;
因为4的二进制位 0b100,所以4需要减一,(4-1) = 3 = 0b011

0b1011 & 0b0011 =  0b11 = 3

二、或运算

或运算:只要1个为1,那么结果就为1

0b 00111
| 
0b 111000b 11111

用处:其实际意义就是把这个数强行变成最近接的偶数。

例如一个数|1的结果就是把二进制最末位强行变为1。如果需要把二进制最末位变成0,对这个数 |1之后再减一就可以了,

三、位移运算

1、<<运算

a<<b 表示把a转为二进制后左移b位(在后面添加 b个0)。

例如100的二进制表示为1100100,100左移2位后(后面加2个零):1100100<<2 =110010000 =400,可以看出,a<<b的值实际上就是a乘以2的b次方,因为在二进制数后面添加一个0就相当该数乘以2,2个零即2的2次方 等于4。通常认为a<<1比a*2更快,因为前者是更底层一些的操作。因此程序中乘以2的操作尽量用左移一位来代替。

定义一些常量可能会用到<<运算。你可以方便的用1<<16 -1 来表示65535(unsingned int 最大值16位系统)。很多算法和数据结构要求数据模块必须是2的幂,此时就可以用<<来定义MAX_N等常量。

2、>>运算

和<<相似,a>>b表示二进制右移b位(去掉末b位),相当于a除以2的b次方(取整)。

我们经常用>>1来代替 /2(div 2),比如二分查找、堆的插入操作等等。想办法用>>代替除法运算可以使程序的效率大大提高。最大公约数的二进制算法用除以2操作来代替慢的出奇的%(mod)运算,效率可以提高60%。

int a =100;
a/4 ==a>>2;

var a = 10;        //0b 1010
var b = a << 3;    //0b 1010 000
print("b is \(b)")
b = 11 >> 2;       //0b 1011
print("b is \(b)")//打印b is 80
b is 2

运用:大小端转换

unsigned char classPoint[4];
uint32_t a = classPoint[0];
uint32_t b = classPoint[1];
uint32_t c = classPoint[2];
uint32_t d = classPoint[3];
uint32_t off = (d << 24) + (c << 16) + (b << 8) + (a << 0);

四:指针

指针操作

// *p + 1// *(p + 1)// char * p// char * q// p = q + 1int a[] = {2,11,33,14,55};int *p;int *q;p = a;q = p+1;printf("%d \n",*p + 1);   	---> 2 + 1 = 3printf("%d \n",*(p + 1)); 	---> a[0+1] = 11printf("%d \n",*q);			---> a[0+1] = 11

五:如何判断大小端

short a = 0x1122;
unsigned char b;
unsigned char c;
b = ((char*)&a)[0]; // 低地址为放低位
c = ((char*)&a)[1]; // 高地址放高位
printf("b:%d,c:%d",b,c);
// b:34,c:17

在这里插入图片描述

b:34,c:17 --> b:0x22,c:0x11 -->小端模式,低地址放低位,高地址放高位
反之就是大端模式


http://chatgpt.dhexx.cn/article/bDYrLNyH.shtml

相关文章

“”是什么含义?与运算入门级讲解;什么是与运算?

与运算&#xff08;AND&#xff09;是计算机中最基础、最常用的一种逻辑运算&#xff0c;也被称为按位与&#xff08;Bitwise AND&#xff09;运算。它是指在二进制数中&#xff0c;对两个二进制数的每一位进行逻辑与操作&#xff0c;只有当两个二进制数的对应位都为1时&#x…

数字电路三种基本逻辑运算关系:与运算、或运算、非运算

1、基本概念 1.逻辑常量与变量&#xff1a;逻辑常量只有两个&#xff0c;即0和1&#xff0c;用来表示两个对立的逻辑状态。逻辑变量与普通代数一样&#xff0c;也可以用字母、符号、数字及其组合来表示&#xff0c;但它们之间有着本质区别&#xff0c;因为逻辑变量的取值只…

二进制与运算、或运算、非运算

与运算 "与"运算是计算机中一种基本的逻辑运算方式&#xff0c;符号表示为&&#xff0c;运算法则为遇0得0。也就是说只要有0&#xff0c;结果即为0。 举例 或运算 "或"运算符号表示为|&#xff0c;运算法则为遇1得1。也就是说只要有1&#xff0c;结…

​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​

说明 所有的位运算符操作的都是二进制&#xff0c;而不是我们日常生活中常用的十进制。 在系统中&#xff0c;一个字节占8位。 按位与运算符&#xff08;&&#xff09; 参加运算的两个数据&#xff0c;按二进制位进行“与”运算。 运算规则&#xff1a;如果两个二进制…

第三章 运算方法与运算器

文章目录 定点补码加减法运算补码加减法运算方法溢出及检测溢出检测操作数与运算结果的符号位是否一致最高位的进位和符号位的进位是否一致变形补码 补码加减法的逻辑实现 移码加减运算及实现逻辑移码的加法运算移码加减法的溢出判断直接采用移码运算的溢出判断方法采用双符号判…

2019做报表用什么软件:报表类型,产品推荐

在大数据时代&#xff0c;报表可以帮助我们从海量数据中挖掘有用的数据&#xff0c;选择软件做什么就变得尤为重要。选择什么类型的软件进行报表?推荐哪些报表产品?本文请一位专业的数据分析师&#xff0c;介绍选择报表软件的经验。 ……阅读更多&#xff0c;请戳原文链接&am…

免费报表软件有哪些?5款热门工具

在企业管理过程中&#xff0c;报表往往都会通过一些简洁的图表方式&#xff0c;为大家呈现所有的数据。报表软件&#xff0c;可以在操作的过程中有效提升工作效率&#xff0c;所以有很多企业早就已经选择跟随信息技术的潮流&#xff0c;选择报表软件工具。很多人也一直都在关注…

分享几款好用免费的报表软件_报表软件推荐

Smartbi Insight Smartbi Insight&#xff08;企业报表平台&#xff09;以中国式报表、多维度分析、可视化仪表盘为核心&#xff0c;满足报表需求的功能以“真Excel”为特色&#xff0c;将Office Excel和WPS表格变为企业级WEB报表设计器&#xff0c;表格样式与计算逻辑的灵活性…

JimuReport积木报表 v1.5.8版本发布—免费的数据可视化报表

项目介绍 一款免费的数据可视化报表&#xff0c;含报表和大屏设计&#xff0c;像搭建积木一样在线设计报表&#xff01;功能涵盖&#xff0c;数据报表、打印设计、图表报表、大屏设计等&#xff01; Web 版报表设计器&#xff0c;类似于excel操作风格&#xff0c;通过拖拽完成报…

报表开发流程

报表开发是数据分析师的常见工作之一。报表是业务监控必备工具之一(用数据说话)&#xff0c;另一方面&#xff0c;报表监控的指标通常都是业务相关的重要指标&#xff0c;做报表的过程也是深入了解业务的过程。 把数据分析分为“描述、解释、预测、控制”4个层级。那么报表开发…

免费报表工具 - RDP报表工具

公司一直用ireport&#xff0c;后来偶然在一个报表QQ群里&#xff0c;看到了有人发RDP报表工具链接&#xff0c;一开始就以为是广告&#xff0c;都没敢点&#xff0c;要知道现在有太多骗子&#xff0c;后来看到群里有人问问题&#xff0c;又截了一些图&#xff0c;才敢放心点进…

mysql 免费报表工具_10款最出色的免费数据库管理工具

任何web软件和应用程序都需要强大的数据库管理工具。目前,网上的数据库管理工具各式各样,而开发者选择一款适合自己的数据库管理工具尤为重要。小编为大家收集了10款超强的数据库管理工具,帮助开发者轻松搞定很多难题。 OpenKeyval是一款免费、开源的键值数据库管理工具,基…

java 报表工具_最好用的5款java web免费报表工具

阅读提示&#xff1a; 文章中与FineReport软件使用的相关内容&#xff0c;基于软件的V7.0旧版本编写&#xff0c;不代表软件最新的使用方式。 FineReport最新版免费试用&#xff1a;https://www.finereport.com/product/active FineReport最新版使用教程&#xff1a;https://he…

软件测试之报表测试

什么是报表测试? 最近开始在做报表测试&#xff0c;顾名思义&#xff0c;就是指测试报表&#xff0c;报表主要是给一些特定的群体展示一些特定数据或是汇总数据&#xff0c;则报表测试主要是跟一堆数据打交道&#xff0c;检验和确认报表展示出来的数据是否正确&#xff0c;取值…

t3软件怎么生成报表_用友T3如何生成报表

用友T3如何生成报表 用友T3如何生成报表 1、报表生成财务报表 → 文件菜单 → 新建 → 选择行业分类模版 → 在格式状态下修改格式(左下角) → 点击左下角“格式”&#xff0c;使其变成“数据”状态 → 数据菜单 → 关键字 → 录入关键字(单位名称、年、月、日)→ 确定 2、保存…

目前国内几大著名报表软件(2014更新)

目前国内几大著名报表软件&#xff08;2014更新&#xff09; cnham 2017-05-08 09:44:24 4044 已收藏 2 分类专栏&#xff1a; HTML和脚本 文章标签&#xff1a; 报表工具 最后发布:2017-05-08 09:44:24首发:2017-05-08 09:44:24 NO1&#xff1a; 帆软报表&#xff08;F…

合并报表软件选哪个?这篇文章两分钟告诉你!

一想到合并报表工具&#xff0c;大多数人肯定选择传统的Excel进行报表合并。虽然利用传统的办公软件实现合并报表为大多数人所熟悉&#xff0c;但是它也逐渐显现出一系列问题。 1.我们在分析报表时&#xff0c;各种不同类型数据之间的经济逻辑关系错综复杂&#xff0c;导致分析…

合并报表软件系统推荐

​手工合并报表时&#xff0c;经常遇到很多问题&#xff0c;而且效率低下&#xff0c;而专业的合并报表软件只需要几步&#xff0c;就能快速准确汇总各子报表&#xff0c;生成合并的报表并动态展示。尤其是对于财务报表来说&#xff0c;能节省大量手工合并做账的重复做工精力。…

2022年,4款值得用的报表工具软件推荐!

“我们企业想用一个报表工具软件&#xff0c;你有推荐吗&#xff1f;”这是小编这两年被问到最多的问题&#xff0c;但凡有点规模的公司&#xff0c;都想使用报表工具。 一、报表工具软件到底怎么选 那报表工具软件到底怎么选&#xff0c;从哪几个维度出发呢&#xff1f;根据…

软件测试报表统计,排行榜Top4的统计报表软件测评

阅读提示&#xff1a; 文章中与FineReport软件使用的相关内容&#xff0c;基于软件的V7.0旧版本编写&#xff0c;不代表软件最新的使用方式。 FineReport最新版免费试用&#xff1a;https://www.finereport.com/product/active FineReport最新版使用教程&#xff1a;https://he…