C语言之位运算符_c语言按位取反运算符怎么用

C语言之位运算符_c语言按位取反运算符怎么用1、在C语言中,位运算符能够针对整数和字符数据的位(bit)进行逻辑与位移的运算,通常区分为“位逻辑运算符”与“位位移运算符”两种。2、位逻辑运算符如下表:运算符 功能 运算过程 & AND(与) 逐位与 | OR(或) 逐位或 ^ XOR(异或) 逐位异或 ~ NOR(非) 逐位非 案例程序如下:#include<stdio.h>#include<stdlib.h&gt…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1、在C语言中,位运算符能够针对整数和字符数据的位(bit)进行逻辑与位移的运算,通常区分为“位逻辑运算符”与“位位移运算符”两种。

2、位逻辑运算符如下表:

运算符         功能 运算过程
& AND(与) 逐位与
| OR(或) 逐位或
^ XOR(异或) 逐位异或
~ NOR(非) 逐位非

案例程序如下:

#include<stdio.h>
#include<stdlib.h>

int main()
{	
	int a=12,b=38;
	
	printf("%d&%d=%d\n",a,b,a&b);/* AND运算 */ 
	printf("%d|%d=%d\n",a,b,a|b);/* OR运算 */ 
	printf("%d^%d=%d\n",a,b,a^b);/* XOR运算 */ 
	printf("~%d=%d\n",a,~a);/* NOT运算 */ 
	
    system("pause");
    return 0;
}

运行结果如下:

C语言之位运算符_c语言按位取反运算符怎么用

 特别注意:~(NOT,非运算)

NOT的作用是取1的补码(complement),在二进制中也就是0与1互换。例如a=12的二进制表示法为1100,取1的补码后,由于所有位都会进行0与1的互换,因此运算后的结果为-13,运算过程如下:

NOT(~)

C语言之位运算符_c语言按位取反运算符怎么用

 

3、位位移运算符

位位移运算符会将整数数值的各个位向左或向右移动指定的位数,C语言提供两种位位移运算符,分别是左移运算符(<<)与右移运算符(>>)。

左移运算符(<<):左移运算符可将操作数的各个位向左移动n位,左移后超出存储范围的就舍去,右边空出来的位补0。语法格式如下:

a<<n

 举例:表达式“12<<2”,数值12的二进制值为1100,向左移动两位后成为110000(十进制为48)。运算过程如下:

C语言之位运算符_c语言按位取反运算符怎么用

 右移运算符(>>):右移运算符(>>)与左移相反,可将操作数的各个位向右移动n位,右移后超出存储范围的就舍去。注意右边空出的位,如果数值是正数就补0,是负数则补1.语法格式如下:

a>>n

例如:表达式 “12<<2”,数值12的二进制值为1100,向右移动两位后成为0011(十进制为3)。运算过程如下:

C语言之位运算符_c语言按位取反运算符怎么用

思考一个问题:负数与左移运算符(<<)及右移运算符(>>)的关系。

我们声明a=12,分别计算12<<2与12>>2的值,接着重新设置a=-12,求-12<<2与-12>>2的值。

程序如下:

#include<stdio.h>
#include<stdlib.h>

int main()
{	
	int a=12; /* a的二进制数为00001100 */ 
	
	
	printf("%d<<%d=%d\n",a,2,a<<2);/* 左移2位运算 */ 
	printf("%d>>%d=%d\n",a,2,a>>2);/* 右移2位运算 */ 
	
	a=-12;/* a的二进制数为11110100 */ 
    printf("%d<<%d=%d\n",a,2,a<<2);/* 左移2位运算 */ 
	printf("%d>>%d=%d\n",a,2,a>>2);/* 右移2位运算 */ 
    
    system("pause");
    return 0;
}

 运行结果如下:

C语言之位运算符_c语言按位取反运算符怎么用

 本专栏还有运算符的相关总结分享,持续更新中,未完待续……

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185974.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号