c语言操作符详解
1,算数操作符
%两个操作数必须为整数
/
2,移位操作符 (只作用于整数)
整数的二进制表示有原码,反码,补码,存储到内存的是补码 ,用的也是补码进行运算
举例
10000000000000000000000000000001------原码
11111111111111111111111111111110 ------反码
正数的反码是其本身,负数的反码是在其原码的基础上, 符号位不变,其余各个位取反)
11111111111111111111111111111111 ------补码(正数的补码是其本身,负数的补码是其反码加一)
(1)>>——右移操作符,移动的是二进制(有除2的效果)①算术右移
右边丢弃,左边补原符号位
②逻辑右移
右边丢弃,左边补0
(2)<<——左移操作符(有乘二的效果)
左边丢弃,右边补0
这个还挺有趣的,多运行找到规律,不能移动负数位
(3)按位与&
a=2 //00000000000000000000000000000010
b=4 //00000000000000000000000000000100
c=a&b=0//00000000000000000000000000000000
(4)按位或|(同上)
a=3 //000000000000000000000011
b=5 //000000000000000000000101
c=a|b=7//000000000000000000000111
(5)按位异或^
对应二进制位相同为0,相异为1
练习一下
不创建变量交换两个整型
①加减法交换(可能会溢出)
②异或法
统计num的补码中有几个1
①无法求负数 ②优化
3,赋值操作符
省略,见手写笔记
4,单目操作符
! - & sizeof
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了