当前位置:首页 » 《关注互联网》 » 正文

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

0 人参与  2024年04月17日 10:11  分类 : 《关注互联网》  评论

点击全文阅读


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

变量十六进制数值二进制数
a0x030000 0011
b0x0A0000 1010
a&b0x020000 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

变量十六进制数值二进制数
a0x030000 0011
b0x0A0000 1010
aIb0x0B0000 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。

变量十六进制数值二进制数
a0x030000 0011
~a0xFC1111 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

变量十六进制数值二进制数
a0x030000 0011
b0x0A0000 1010
a^b0x090000 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。

变量十六进制数值二进制数
a0x030000 0011
a<<20x0C0000 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,低位丢弃。

变量十六进制数值二进制数
a0x0831000 0011
a>>10x410100 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;}

运行结果如下:

在这里插入图片描述

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

变量十六进制数值二进制数
a0x0831000 0011
a>>10xC11100 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;}

运行结果如下:

在这里插入图片描述



点击全文阅读


本文链接:http://m.zhangshiyu.com/post/96368.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 家宴过后,我捉奸了庶妹和我老公后续+番外_庶妹老公侍卫读者推荐_小说后续在线阅读_无删减免费完结_
  • 首富老公为三姐妹点天灯挥金如土,我换嫁贺总轰动全国强推_胥淮岁岁过敏最新阅读_小说后续在线阅读_无删减免费完结_
  • 未婚夫和同事孕期领证,我转身嫁入豪门推荐_沈泽光安南拿泽光小编推荐_小说后续在线阅读_无删减免费完结_
  • 重回奥运种子选手陷害我的这天番茄热门_林子李梦冷笑在线看_小说后续在线阅读_无删减免费完结_
  • 知微向海完结全文_陆知衍纪瑶奶奶最新阅读_小说后续在线阅读_无删减免费完结_
  • 被污蔑送错外卖后,我杀疯了阅读_小徐胡闹阅读_小说后续在线阅读_无删减免费完结_
  • 我坐上评委席后,把我踢出乐队的男友悔疯了快手热门_乔枝姐阿媛程戬常读_小说后续在线阅读_无删减免费完结_
  • 当风吹落了雨TOP10_老公陈角鹰薇薇大反击_小说后续在线阅读_无删减免费完结_
  • 未婚夫逼我放弃继承权后,全家悔疯了一口气完结_沈雨雨柔养老校园甜文_小说后续在线阅读_无删减免费完结_
  • 手撕无耻老婆一家宝藏文_小姨子钟琳老公人气小说_小说后续在线阅读_无删减免费完结_
  • 愿得一人心常读_萧城蒋雪柔华冉优质全文_小说后续在线阅读_无删减免费完结_
  • 女士的玩具推文_杜小灵白月光杜雪必读文_小说后续在线阅读_无删减免费完结_

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1