C语言易忘操作符全集

位操作符

1.按位与(&)

这个操作符对两个整数的每一位进行比较,如果两个相应的位都为1,则结果为1,否则为0。

int a = 60; // 60 = 0010 1100 in binary

int b = 13; // 13 = 0000 1101 in binary

int c = a & b; // c = 0000 1100 = 12 in binary

2.按位或(|)

这个操作符对两个整数的每一位进行比较,如果两个相应的位中有一个为1,则结果为1,否则为0。

int a = 60; // 60 = 0010 1100
int b = 13; // 13 = 0000 1101
int c = a | b; // c = 0010 1101 = 61

3.按位异或(^)

这个操作符对两个整数的每一位进行比较,如果两个相应的位中有一个为1且另一个为0,则结果为1,否则为0。

int a = 60; // 60 = 0010 1100
int b = 13; // 13 = 0000 1101
int c = a ^ b; // c = 0010 0001 = 49

4.按位取反(~)

这个操作符对一个整数的每一位进行取反操作。如果某一位是1,则结果为0;如果是0,则结果为1。

int a = 60; // 60 = 0010 1100
int b = ~a; // b = -61 = 1101 0011 (-61的二进制补码)

5.左移(<<)

规则:正数二进制左移右端补0,负数补码左移一,符号位不变,右端空位补零

左移是指将二进制位向左移动一位同时最后空出来的一位补零。下面以实例演示: 例如,十进制数字5,二进制为00000000000000000000000000000101,现左移一位,即变成00000000000000000000000000001010,转换成二进制数字应为10:再看负数,例如-5,左移一位后保留符号位不变,右端补零,应为-10.

6.右移(>>)

分为:算数右移和逻辑右移

介绍:算数右移,计算机系统以算数右移为主

规则: 右移末尾舍弃,高位补符号位

仍看例子,例如正整数5,存储2进制为00000000000000000000000000000101,右移一位后变成00000000000000000000000000000010,对应十进制为2。

再例如负整数-5,左移后高位补符号位,低位舍弃,-5对应的原码:

10000000000000000000000000000101: 反码: 111111111111111111111111111111111010

,补码111111111111111111111111111111111011,补码右移1位后变成111111111111111111111111111111111101,对应的反码: 111111111111111111111111111111111100,对应的原码:

10000000000000000000000000000011,及二进制-3.


逻辑操作符

1.逻辑与(&&)

当且仅当两个操作数都为真时,逻辑与的结果才为真。

int a = 10;
int b = 20;
if (a > 5 && b > 10) {
printf("Both conditions are true\n");
}

2.逻辑或(||)

只要有一个操作数为真,逻辑或的结果就为真。

int a = 10;
int b = 5;
if (a > 5 || b > 10) {
printf("At least one of the conditions is true\n");
}

3.逻辑非(!)

逻辑非是对一个操作数的逻辑否定。如果操作数为真,则逻辑非的结果为假;如果操作数为假,则逻辑非的结果为真。

int a = 10;
if (!a > 5) {
printf("The condition is false\n");
}

相关推荐
Am心若依旧40933 分钟前
[c++11(二)]Lambda表达式和Function包装器及bind函数
开发语言·c++
明月看潮生36 分钟前
青少年编程与数学 02-004 Go语言Web编程 20课题、单元测试
开发语言·青少年编程·单元测试·编程与数学·goweb
大G哥1 小时前
java提高正则处理效率
java·开发语言
stm 学习ing1 小时前
HDLBits训练5
c语言·fpga开发·fpga·eda·hdlbits·pld·hdl语言
VBA63371 小时前
VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL
开发语言
轩辰~1 小时前
网络协议入门
linux·服务器·开发语言·网络·arm开发·c++·网络协议
小_太_阳1 小时前
Scala_【1】概述
开发语言·后端·scala·intellij-idea
向宇it1 小时前
【从零开始入门unity游戏开发之——unity篇02】unity6基础入门——软件下载安装、Unity Hub配置、安装unity编辑器、许可证管理
开发语言·unity·c#·编辑器·游戏引擎
古希腊掌管学习的神2 小时前
[LeetCode-Python版]相向双指针——611. 有效三角形的个数
开发语言·python·leetcode
赵钰老师2 小时前
【R语言遥感技术】“R+遥感”的水环境综合评价方法
开发语言·数据分析·r语言