admin管理员组文章数量:1794759
C语言:操作符详解(超详细的操作符详解)
操作符的分类
算术操作符:+ - * / % 逻辑操作符: && || !、 移位操作符:<< >> 赋值操作符:= += -= *= /= %= &= |= ^= >>= <<= 单⽬操作符: !、++、--、&、*、+、-、~ 、sizeof、(类型) 关系操作符:> 、>= 、< 、<= 、 == 、 != 条件操作符: ? : 逗号表达式: , 下标引⽤: [] 函数调⽤: ()
原码、反码、补码
原码、反码、补码:都是用二进制表示的
原码、反码、补码:有正数和负数
符号位
最⾼位的1位是被当做符号 位,剩余的都是数值位。 符号位都是⽤0表⽰“正”,⽤1表⽰“负”、
正数的符号位是 0
负数的符号位是 1
正数的原码、反码、补码都是一样的
负数的三种表⽰⽅法各不相同
原码:直接将数值按照正负数的形式翻译成⼆进制得到的就是原码 反码:符号位不变,其他位按位取反,把0变1,把1变0 补码:反码+1就可以得到补码
数据存放内存中其实存放的是补码
为什么呢? 在计算机系统中,数值⼀律⽤补码来表⽰和存储。原因在于,使⽤补码,可以将符号位和数值域统⼀ 处理;同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算 过程是相同的,不需要额外的硬件电路。
下面这代码的加法运算,是先把a和b原码转换成反码在进行加法运算,加完后在转换成原码进行输出,减法运算同理
移位操作符
对于移位操作符不可移动负数,是错误的
int num = 10; num>>-1; //error
左移操作符<<
左移操作符是左边丢弃,右边补0
右移操作符>>
右移操作符是右边丢弃,左边补符号位
位操作符:&、|、^、~
& //按位与 | //按位或 ^ //按位异或 ~ //按位取反
按位与 &
、
按位与和逻辑与的原理一样
a和b的二进制对比2个1才为1,其他为0
按位或 |
按位或和逻辑或的原理一样
a和b的二进制对比有1就为1
2个0才为0
按位异或 ^
按位异或是相异为1,相同为0
按位取反 ~
0的二进制位全是0,取反后是全1
-1也是一样
逗号表达式 ,
逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果。
逗号表达式是用,号隔开的
表达式,表达式,表达式........
我们可以看到1赋值给a ,a大于0,
a+b赋值给c,把c赋值给a和b,
逗号表达式,从左向右依次执⾏。整个表达式的结果是最后⼀个表达式的结果。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-06-02,如有侵权请联系 cloudcommunity@tencent 删除函数硬件原理存储二进制本文标签: C语言操作符详解(超详细的操作符详解)
版权声明:本文标题:C语言:操作符详解(超详细的操作符详解) 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754604477a1704289.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论