C语言 基础开发----目录


一、位运算符----简介

位运算符 就是按二进制位进行运算。

C语言中位运算符主要包括六种,具体如下:
与(&),或(|),非(~),异或(^),左移(<<)和右移(>>)

位运算符 含义 说明
& 按位 有0为0,双1为1: 1&1=1,1&0=0,0&1=0,0&0=0
只有两者对应位都为1,结果对应位才为 1,否则为 0
I 按位 有1为1,双0为0: 1I1=1,1I0=1,0I1=1,0I0=0
只要两者对应位有一个为1,则结果对应位就为 1,否则为 0
~ 按位取反 1变0,0变1: ~1=0, ~0=1
如果该位为 1,则结果对应位为 0
如果该位为 0, 则结果对应位为 1
^ 按位异或 不同为1,相同为0: 1^1=0, 1^0=1, 0^1=1, 0^0=0
只有两者对应位不一样,则结果对应位才为 1, 否则为 0
<< 左移 左移n位就是乘以2的n次方
所有位依次向左移动,高位丢弃,低位补0
>> 右移 右移n位就是除以2的n次方
无符号数据:所有位依次向右移动,高位补0,低位丢弃
有符号数据:所有位依次向右移动,符号位不变,低位丢弃

二、位运算符----详细说明

1. 位与运算(&):有0为0,双1为1

只有两者对应位都为1,结果对应位才为 1,否则为 0

变量 十六进制数值 二进制数
a 0x03 0000 0011
b 0x0A 0000 1010
a&b 0x02 0000 0010

举例说明:

#include <stdio.h>int main(int argc, char *argv[])
{unsigned char a=0x03,b=0x0A;printf("a=0x%X\n",a);printf("b=0x%X\n",b);printf("a&b=0x%X\n",a&b);return 0;
}

运行结果如下:

2. 位或运算(|):有1为1,双0为0

只要两者对应位有一个为1,则结果对应位就为 1,否则为 0

变量 十六进制数值 二进制数
a 0x03 0000 0011
b 0x0A 0000 1010
aIb 0x0B 0000 1011

举例说明:

#include <stdio.h>int main(int argc, char *argv[])
{unsigned char a=0x03,b=0x0A;printf("a=0x%X\n",a);printf("b=0x%X\n",b);printf("a|b=0x%X\n",a|b);return 0;
}

运行结果如下:

3. 位取反运算(~):1变0,0变1

如果该位为 1,则结果对应位为 0。
如果该位为 0, 则结果对应位为 1。

变量 十六进制数值 二进制数
a 0x03 0000 0011
~a 0xFC 1111 1100

举例说明:

#include <stdio.h>int main(int argc, char *argv[])
{unsigned char a=0x03,b=~a;printf("a=0x%X\n",a);printf("b=0x%X\n",b);return 0;
}

运行结果如下:

4. 位异或运算(^):不同为1,相同为0

只有两者对应位不一样,则结果对应位才为 1, 否则为 0

变量 十六进制数值 二进制数
a 0x03 0000 0011
b 0x0A 0000 1010
a^b 0x09 0000 1001

举例说明:

#include <stdio.h>int main(int argc, char *argv[])
{unsigned char a=0x03,b=0x0A;printf("a=0x%X\n",a);printf("b=0x%X\n",b);printf("a^b=0x%X\n",a^b);return 0;
}

运行结果如下:

5. 左移运算(<<)

所有位依次向左移动,高位丢弃,低位补0。

变量 十六进制数值 二进制数
a 0x03 0000 0011
a<<2 0x0C 0000 1100

举例说明:

#include <stdio.h>int main(int argc, char *argv[])
{unsigned char a=0x03;printf("a=0x%X\n",a);printf("a<<2=0x%X\n",a<<2);return 0;
}

运行结果如下:

6. 右移运算(>>)

无符号数据:所有位依次向右移动,高位补0,低位丢弃。

变量 十六进制数值 二进制数
a 0x083 1000 0011
a>>1 0x41 0100 0001

举例说明:

#include <stdio.h>int main(int argc, char *argv[])
{unsigned char a=0x83;printf("a=0x%X\n",a);printf("a>>1=0x%X\n",a>>1);return 0;
}

运行结果如下:

有符号数据:所有位依次向右移动,符号位不变,低位丢弃。

变量 十六进制数值 二进制数
a 0x083 1000 0011
a>>1 0xC1 1100 0001

举例说明:

#include <stdio.h>int main(int argc, char *argv[])
{char a=0x83;printf("a=0x%X\n",(unsigned char)a);printf("a>>1=0x%X\n",(unsigned char)(a>>1));return 0;
}

运行结果如下:


C语言:位运算符----与(),或(|),非(~),异或(^),左移(<<)和右移(>>)相关推荐

  1. 单片机c语言或运算,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解

    位运算是指按二进制位进行的运算.在单片机中位运算通常用于I/O端口的输入输出控制和逻辑判断. C语言提供的位运算符有: 运算符 含义 功能 & 按位与 如果两个相应的二进制位都为1,则该位的结 ...

  2. c语言负数左移右移_C语言位运算符:与、或、异或、取反、左移和右移!

    语言位运算符:与.或.异或.取反.左移和右移 位运算是指按二进制进行的运算.在系统软件中,常常需要处理二进制位的问题.C语言提供了6个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符 ...

  3. c语言负数左移右移_C语言位运算符:与、或、异或、取反,左移和右移

    C语言位运算符:与.或.异或.取反.左移和右移 个位操作运算符.这些运算符只能用于整型操作数,即只能用于带符号或无符号的char,short,int与long类型. ,则该位的结果值为1,否则为0 | ...

  4. 16位异或 c语言,C语言位运算符:与、或、异或、取反、左移和右移

    <C语言位运算符:与.或.异或.取反.左移和右移>由会员分享,可在线阅读,更多相关<C语言位运算符:与.或.异或.取反.左移和右移(7页珍藏版)>请在人人文库网上搜索. 1.C ...

  5. C语言位运算符:与、或、异或、取反、左移和右移

    C语言位运算符主要包括六种:与( & ).或( | ).异或( ^ ).取反( ~ ).左移( >> )和右移( << ) 运算符 含义 描述 & 按位与 如果 ...

  6. c语言中按位或赋值给变量,[转载]C语言位运算符在单片机上的应用

    C语言位运算符 学过汇编的朋友都知道汇编对位的处理能力是很强的,但是C语言也能对运算对象进行按位操作,从而使C语言也能具有一定的对 硬件直接进行操作的能力.位运算符的作用是按位对变量进行运算,但是并不 ...

  7. c语言中字符进行按位与,c语言位运算符的用法

    C语言中位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果.下面小编就为大家介绍下c语言位运算符的用法. c语言位运算符的用法 ...

  8. c语言位非运算符,C语言-位运算符

    C语言--位运算符 一.位运算符 1.按位与:& 1> 功能 * 只有对应的两个二进制位为1时,结果位才为1,否则为0 * 举例:10用二进制表示为1010,  7用二进制表示为0111 ...

  9. c语言位与运算的作用,c语言位运算符的用法

    c语言位运算符的用法 C语言中位运算的运算分量只能是整型或字符型数据,位运算把运算对象看作是由二进位组成的位串信息,按位完成指定的运算,得到位串信息的结果.下面小编就为大家介绍下c语言位运算符的用法. ...

  10. c语言位运算符的使用_C语言程序使用位运算符检查给定数字是否为回文

    c语言位运算符的使用 Problem statement: Write a C program to check whether a number (binary representation) is ...

最新文章

  1. application
  2. 代码规范之华为公司代码规范
  3. mysql目录树_无限级目录树+记忆节点状态(PHP+mysql)
  4. 一文读懂机器学习的常用模型评价指标
  5. 分解质因数-洛谷P3200 [HNOI2009]有趣的数列
  6. centos 安装idea 非可视化_太厉害了!目前 Redis 可视化工具最全的横向评测
  7. 概率论之pandas
  8. 2008r2服务器频繁自动重启,解决windows server 2008 更新后不断重启现象
  9. java语言程序设计期中考试_《java语言程序设计》期中试卷(答案).doc
  10. 获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
  11. 35-BigDecimal详解
  12. 晶体管制程极限之后,多层CPU是否可能?
  13. 八猴渲染器4.0基本使用教程及渲染教程
  14. MessagingTimeout: Timed out waiting for a reply to message ID
  15. Occam‘s razor - 奥卡姆剃刀
  16. xp系统开机自检很久_windows XP系统开机总自检怎么取消
  17. re管理器修改音量_教你巧用RE管理器修改手机各种系统声音锁屏声音
  18. Linux motd详解
  19. 怎么装python的keras库_Keras教程:用Python进行深度学习的终极入门指南
  20. ETHEOS开发资源及工具集合(完整汇总版)

热门文章

  1. 电影推荐系统 python简书_【火炉炼AI】机器学习033-构建电影推荐系统
  2. 京东香港上市,开盘239港元,首日上涨5.7%
  3. 计算机控制系统介绍,介绍加热炉计算机控制系统的使用方
  4. c语言作业题一答案,C语言考试试题及答案
  5. 微信开发者工具-码云项目的导入
  6. 第6章 JAVA Servlet 基础
  7. 植物大战僵尸新植物僵尸(上)
  8. ROS复习笔记之——roslaunch的应用
  9. unity入门学习实验——控制游戏物体运动
  10. 供应商维护银行帐户的一点心得