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

这篇具有很好参考价值的文章主要介绍了C语言:位运算符----与(&),或(|),非(~),异或(^),左移(<<)和右移(>>)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

运行结果如下:

c语言与或非,C语言,c语言,位运算符

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

运行结果如下:

c语言与或非,C语言,c语言,位运算符

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

运行结果如下:

c语言与或非,C语言,c语言,位运算符

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

运行结果如下:

c语言与或非,C语言,c语言,位运算符

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

运行结果如下:

c语言与或非,C语言,c语言,位运算符

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

运行结果如下:

c语言与或非,C语言,c语言,位运算符

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

变量 十六进制数值 二进制数
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语言与或非,C语言,c语言,位运算符文章来源地址https://www.toymoban.com/news/detail-801752.html


到了这里,关于C语言:位运算符----与(&),或(|),非(~),异或(^),左移(<<)和右移(>>)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 有符号数和无符号数左移和右移

    主要是有符号数的左移。 有的说不管符号位,直接左移,所以可以一会正数一会复数 https://bbs.csdn.net/topics/391075092 有的说符号位不动,其他来左移 不明白了。。。。 https://blog.csdn.net/hnjzsyjyj/article/details/119721014 https://wenku.baidu.com/view/6e31935402f69e3143323968011ca300a6c3f60d.html? wkts =1

    2024年02月01日
    浏览(38)
  • learn_C_deep_11 (深刻理解整形提升、左移和右移规则、花括号、++和--操作、表达式匹配:贪心算法)

    深刻理解整形提升 左移和右移规则 如何理解\\\"丢弃\\\" 一个问题  0x012+3 的值是多少 花括号 ++、--操作 表达式匹配:贪心算法 char类型的c经过按位取反、左移和右移是不是char类型了?为什么char类型的c加了操作符运算求空间大小就不是1了呢?         无论任何位运算符,目

    2024年02月05日
    浏览(36)
  • C语言中的运算符及算术运算符详解

    在C语言中,运算符是一种特殊的符号,用于表示数据的运算、赋值和比较等。本文将介绍C语言中的运算符,特别关注算术运算符,并提供一些示例来说明它们的用法。 C语言中的运算符可以按照其功能和操作数个数进行分类。以下是一些主要的运算符分类: 1. 按照功能分类

    2024年01月22日
    浏览(67)
  • C语言【运算符】

    1、运算符分类 按照操作个数分类: 一元运算符(一目运算符) :只有一个操作数。如 负号 -1。 二元运算符(二目运算符) :有两个操作数。如 加号 1+2。 三元运算符(三目运算符) :有三个操作数。如 ?: ab?1:2。 按功能分类: 算数运算符 :正(+)、负(-)、加(+)、

    2024年02月05日
    浏览(56)
  • Go 语言运算符

    文章目录 概要 整体架构流程 技术名词解释 技术细节 小结 🌟  欢迎来到 猫头虎的博客   — 探索技术的无限可能! 深入探索各技术领域,发现知识的交汇点。了解更多,请访问: - [ 猫头虎技术矩阵 ](https://bbs.csdn.net/topics/617720781) - [ 新矩阵备用链接 ](https://bbs.csdn.net/topi

    2024年02月05日
    浏览(39)
  • C语言中的除法运算符“/”与取模运算符“%”:深入解析与示例

    🔥温馨提示🔥:使用电脑端阅读,获取更好体验🚀 在C语言中, / 和 % 运算符是与除法相关的两个运算符,它们有以下特点: / (除法运算符): 用途:计算两个数之间的除法。 结果类型:如果两个操作数都是整型,结果也将是整型,且向下取整(即忽略小数部分,也称

    2024年03月15日
    浏览(83)
  • 运算符详解(c语言)

    引言: hello,大家好!我是心跳sy,今天给大家分享c语言运算符详解,我们知道,c语言的一个显著特点就是表达式的应用,表达式是表示如何计算值的公式,而运算符又是构建表达式的基本工具,c语言拥有非常丰富的运算符,包括算术运算符、关系运算符、逻辑运算符、赋

    2024年02月12日
    浏览(37)
  • C语言运算符详解

    【导言】 C语言是一门非常底层的编程语言,它支持多种运算符进行数值运算、逻辑运算等操作。C语言中的运算符主要有算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、条件运算符等。本篇文章将会详细介绍C语言中的各种运算符及其使用方法。 一、算术运

    2024年02月07日
    浏览(44)
  • C 语言运算符详解

    运算符用于对变量和值进行操作。 在下面的示例中,我们使用 + 运算符将两个值相加: 虽然 + 运算符通常用于将两个值相加,就像上面的示例一样,它还可以用于将变量和值相加,或者将变量和另一个变量相加: C 将运算符分为以下几组: 算术运算符 赋值运算符 比较运算

    2024年02月04日
    浏览(44)
  • C语言—位运算符

    目录 (位与,AND): |(位或,OR): 位取反(~): 左移(): 右移(): 语法: a b 作用:将两个整数的对应二进制位进行逐位与运算,如果对应位都为1,则结果对应位为1;否则为0。 语法: a | b 作用:将两个整数的对应二进制位进行逐位或运算,如果对应位中至少有一个为1,

    2024年02月07日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包