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

你可能感兴趣的:(C语言,c语言,开发语言,c++,算法,数据结构)