当前位置: 首页 > news >正文

C语言易忘操作符全集

目录

位操作符

1.按位与(&)

2.按位或(|)

3.按位异或(^)

4.按位取反(~)

5.左移(<<)

6.右移(>>)

逻辑操作符

1.逻辑与(&&)

2.逻辑或(||)

3.逻辑非(!)


位操作符

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");  
}

http://www.lryc.cn/news/286392.html

相关文章:

  • 网络请求 mvp mvvm get post delete put 请求
  • 研究生开题报告撰写:文言一心VSChatgpt3.5
  • Unity animator动画倒放的方法
  • Dubbo源码解析第一期:如何使用Netty4构建RPC
  • unity刷新grid,列表
  • 蓝桥杯备赛 day 3 —— 高精度(C/C++,零基础,配图)
  • 人形机器人创新发展顶层设计与关键技术布局
  • C语言-算法-最小生成树
  • android 扫描某个包下的所有类
  • 远程ssh 不通的原因之一
  • wamp集成环境部署
  • 使用antd design pro 及后端nodejs express 结合minio进行文件的上传和下载管理
  • Unity常用的优化技巧集锦
  • c++动态调用dll
  • 使用Python自动化操作手机,自动执行常见任务,例如滑动手势、呼叫、发送短信等等
  • E - Souvenir(图论典型例题)
  • 【SpringBoot篇】添加富文本编辑器操作
  • 前台vue配置
  • 牛客周赛 Round 18 解题报告 | 珂学家 | 分类讨论计数 + 状态DP
  • CentOS防火墙基本操作
  • Shell脚本的编程规范和变量类型
  • C++面试:跳表
  • 掌握C++20的革命性特性:Concepts
  • win11开机后频繁刷新桌面,任务栏不显示,文件资源管理器explorer报错ntdll.dll
  • 解决Git添加.gitignore文件后不生效的问题
  • Shell Linux学习笔记
  • kingbase常用SQL总结之锁等待信息
  • 「优选算法刷题」:长度最小的子数组
  • RuoYi-Cloud本地部署--详细教程
  • 如何优雅的发布一个 TypeScript 软件包?