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

C语言(5)—操作符详解

文章目录

  • 一、操作符分类概览
  • 二、二进制与进制转换
    • 2.1 进制基本概念
  • 三、原码、反码与补码
    • 3.1 基本概念
  • 四、位操作符详解

一、操作符分类概览

C语言中的操作符可以分为以下几大类:

算术操作符:+, -, *, /, %

移位操作符:<<, >>

位操作符:&, |, ^, ~

赋值操作符:=, +=, -=, *=, /=, %=, <<=, >>=, &=, |=, ^=

单目操作符:!, ++, --, &, *, +, -, ~, sizeof, (类型)

关系操作符:>, >=, <, <=, ==, !=

逻辑操作符:&&, ||

条件操作符:?:

逗号表达式:,

下标引用:[]

函数调用:()

结构成员访问:., ->

二、二进制与进制转换

2.1 进制基本概念

二进制:基数为2,数字为0和1

八进制:基数为8,数字0-7(前缀0)

十进制:基数为10,数字0-9

十六进制:基数为16,数字0-9和A-F(前缀0x)

三、原码、反码与补码

3.1 基本概念

原码:最高位表示符号(0正1负),其余位表示数值

反码:正数同原码;负数符号位不变,其余位取反

补码:正数同原码;负数为反码+1

四、位操作符详解

4.1 移位操作符
4.1.1 左移操作符 (<<)
规则:高位丢弃,低位补0

c
int a = 5; // 00000101
int b = a << 2; // 00010100 → 20
4.1.2 右移操作符 (>>)
两种方式:

逻辑右移:高位补0,低位丢弃

算术右移:高位补符号位,低位丢弃(常见实现)

c
int a = -8; // 11111000 (补码)
int b = a >> 2; // 11111110 → -2 (算术右移)
4.2 位逻辑操作符
& (按位与):两位都为1时结果为1

| (按位或):任一位为1时结果为1

^ (按位异或):两位不同时结果为1
(按位取反):0变1,1变0

应用示例:

c
// 交换两个变量的值(不使用临时变量)
void swap(int *a, int *b) {
*a = *a ^ *b;
*b = *a ^ *b;
*a = *a ^ *b;
}

// 判断奇偶
bool isOdd(int num) {
return num & 1;
}

http://www.xdnf.cn/news/2640.html

相关文章:

  • leetcode 143. 重排链表
  • js day8
  • Java学习手册: IoC 容器与依赖注入
  • leetcode刷题日记——两数相加
  • 【Redis】基础4:作为分布式锁
  • 搭建speak yarn集群:从零开始的详细指南
  • 关于健身房管理系统前后端软件开发主要功能需求分析
  • 深入理解网络原理:TCP协议详解
  • MCP Servers玩玩WebUI自动化
  • 如何在idea 中写spark程序
  • UARA串口开发基础
  • Dify+DeepSeek实战教程!企业级 AI 文档库本地化部署,数据安全与智能检索我都要
  • OpenResty技术深度解析:原理、应用与生态对比-优雅草卓伊凡
  • 基于 BERT 微调一个意图识别(Intent Classification)模型
  • LinuxAgent开源程序是一款智能运维助手,通过接入 DeepSeek API 实现对 Linux 终端的自然语言控制,帮助用户更高效地进行系统运维工作
  • astrbot_plugin_composting_bucket开源程序是一个用于降低AstrBot的deepseek api调用费用的插件
  • AI大模型:(二)2.4 微调自己的模型
  • 蒋新松:中国机器人之父
  • 解构编程语言的基因密码:论数据类型如何被语言系统定义与重塑
  • 达梦数据库官方迁移工具SQLark:支持Oracle/MySQL/PostgreSQL迁移至达梦数据库!
  • 使用exdp 备份数据库
  • Scratch——第20课 辗转相除法/绳子算法
  • GitLab CVE-2024-12444 安全漏洞解决方案
  • 劳动节ppt免费下载,劳动节ppt模板,劳动节课件
  • 配置电子邮件服务
  • LabVIEW开发之困境中逼出成长力
  • MCP之二_服务器与客户端实现
  • 抱佛脚之学SSMAOP
  • 【AI News | 20250428】每日AI进展
  • 国内比较好用的代理IP测评