news 2026/3/6 3:58:50

位操作符和单目操作符

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
位操作符和单目操作符

一、位操作符

1.1 &(按位与操作符)

按位操作符表示两个整数对应的二进制位全部为1才为1,有一个为0就为0;
例如:

5&15 5转换为二进制 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 15的二进制 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 5&15的二进制 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 所以5&15 = 5

其实我们也可以把他类似的看作逻辑&&操作符,如果两个条件都成立则返回1,有1个或1个以上都不成立,而当条件为1是就是真,当条件为假时就为0

1.2 |(按位或操作符)

按位或操作符表示只要对应的二进制位有1,那么 | 后的结果就是1
例如:

5: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 15: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 5 | 15:0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 所以 5 | 15 = 15

同样的,我们也可以把他类似的看作||,只要其中一个条件成立,就返回1

1.3 ^ (按位异或操作符)

按位异或操作符表示不同为1,相异为0
例如:

5: C 15: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 5^15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 所以,5^15 = 10

1.4 ~ (按位取反操作符)

按位取反操作符表示把一个数的二进制按位取反,也就是0变成1,1变成0
例如:

5: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 ~a: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 按位取反后,符号位变成了1,我们都知道负数在存储的时候是补码,所以还需要把补码转换为原码 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 所以~a = -6

二、单目操作符

单目操作符的特点是只有一个操作数

2.1 !(非操作符)

非操作符一般用于布尔表达式当中,将布尔表达式的值取反,即假变成真,真变成假
就比如:a>b已经成立,返回真(非0),如果加上!(a>b),那么这个表达式返回的值就会假(0)

2.2 ++、–

++是自增操作符,用于将整数本身的值增加1
例如:

int a = 5; a++;a++后,a就变成了6

那么,a++和++a有什么区别呢?
直接看两个例子:

inta=5;intb=0;b=a++;//先把a的值赋给b,然后a的值再自增1b=++a//a的值先自增,然后再把a的值赋给b

知道了++以后,–其实也是类似的

2.3 +、-

这里的+和-表示的是一个值的正负号,正号可以省略,负号不能省略

2.4 sizeof

sizeof用来求变量和数据类型的大小

#include<stdio.h>intmain(){inta=0;printf("%zu\n",sizeofa);//当变量最为参数时,括号可以省略printf("%zu\n",sizeof(int));printf("%zu\n",sizeof(char));printf("%zu\n",sizeof(short));printf("%zu\n",sizeof(longlong));printf("%zu\n",sizeof(float));printf("%zu\n",sizeof(double));printf("%zu\n",sizeof(longdouble));}

运行结果:

需要注意的是,当sizeof求一个字符串的大小时,由于字符串后面会自己补一个"\0",所以得到的长度会多一个字符的长度

#include<stdio.h>intmain(){charch[]="abcdef";printf("%zu",sizeof(ch));}

运行结果:

sizeof也可以求数组的元素个数

#include<stdio.h>intmain(){intarr[]={1,2,3,4,5,6,7,8,9,0};intsz=sizeof(arr)/sizeof(arr[0]);//数组总大小/数组每个元素的大小就=元素个数printf("%d",sz);}

运行结果:

2.5 类型

类型也是一个单目操作符,就比如int a = 0;int 就是指定a的类型,a就是类型的操作数

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/4 7:45:15

为什么顶级政务部门都在悄悄部署Open-AutoGLM?(内部技术白皮书流出)

第一章&#xff1a;Open-AutoGLM在政务场景中的战略定位Open-AutoGLM作为新一代开源自动化生成语言模型&#xff0c;正逐步成为政务智能化转型的核心支撑技术。其在政策解读、公文生成、智能问答与跨部门协同等关键场景中展现出强大的适应性与扩展能力&#xff0c;为构建高效、…

作者头像 李华
网站建设 2026/3/4 8:45:14

公积金提取太慢?Open-AutoGLM智能引擎提速9倍,你试过了吗?

第一章&#xff1a;公积金提取太慢&#xff1f;Open-AutoGLM智能引擎提速9倍&#xff0c;你试过了吗&#xff1f;在传统政务系统中&#xff0c;公积金提取流程常因人工审核、多级审批和数据孤岛问题导致处理周期长达7天以上。Open-AutoGLM 是一款基于大模型自动化决策的智能引擎…

作者头像 李华
网站建设 2026/3/4 22:21:44

计算机毕业设计springboot基于微信小程序的校园招聘系统 基于微信小程序的校园招聘管理系统设计与实现 SpringBoot框架下微信小程序校园招聘系统开发与应用

计算机毕业设计springboot基于微信小程序的校园招聘系统t71ls9 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着数字化技术的飞速发展&#xff0c;校园招聘管理逐渐从传统的线…

作者头像 李华
网站建设 2026/3/4 4:23:49

揭秘Open-AutoGLM校园服务引擎:如何实现99.9%可用性的智能调度?

第一章&#xff1a;Open-AutoGLM校园服务引擎概述Open-AutoGLM 是一款专为高校场景设计的智能服务引擎&#xff0c;融合了大语言模型&#xff08;LLM&#xff09;能力与自动化流程控制机制&#xff0c;旨在提升校园管理效率、优化师生服务体验。该引擎基于 GLM 架构进行深度定制…

作者头像 李华
网站建设 2026/3/4 4:50:32

好写作AI:你的论文为什么越改越差?当心陷入“AI修改陷阱”

你有没有经历过这样的绝望循环&#xff1f;收到修改意见后&#xff0c;你让AI“让这段表述更学术”——它照做了。但接着&#xff0c;导师又说“理论深度不够”&#xff0c;你再次求助AI“加强理论深度”——它又生成一版。几轮下来&#xff0c;那段文字变得臃肿、矛盾&#xf…

作者头像 李华
网站建设 2026/3/5 18:07:49

家政O2O新蓝海:Open-AutoGLM智能调度系统的5大核心优势

第一章&#xff1a;Open-AutoGLM 家政服务下单Open-AutoGLM 是一个基于大语言模型的自动化任务调度系统&#xff0c;专为家政服务场景设计。它通过自然语言理解与意图识别&#xff0c;将用户请求自动转化为可执行的服务订单&#xff0c;并调度相应资源完成上门服务。服务请求解…

作者头像 李华