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)
blank

相关推荐

  • inputstreamwriter_computrace

    inputstreamwriter_computrace关于往文件存入数据所使用的编码和解析时编码产生的问题解码的格式和编码的格式一定要相同否则会出现乱码importjava.io.*;publicclassFuXi3{publicstaticvoidmain(String[]args)throwsIOException{demo01();demo02();}privatestaticvoiddemo02()thro.

  • javascript系统时间测试题

    如果系统的时间是2016年2月20日,分析下列JavaScript代码,运行后在网页上显示()varnow=newDate();varyear=now.getFullYear();va

    2021年12月21日
  • FreeWebHostingArea_skyscraperpage

    FreeWebHostingArea_skyscraperpagehttp://www.cnblogs.com/skyme/archive/2011/10/26/2223984.html

  • 当和尚遇到钻石「建议收藏」

    当和尚遇到钻石「建议收藏」 序推荐序    麦克尔·罗奇先生,我不认识他,但是看了他写的《当和尚遇到钻石》这本书以后,令我对他产生了由衷的敬佩之意。他身在商业界,实修清净行,特别是他具有高人一等的智能,将《金刚经》融会贯通,运用万法潜能,发挥在商场的经营上……      罗奇先生的道心坚定,虽然事业经营成功,但内心从来没有忘记自己是一位修道者,他尊师重道,对师父的指示从不敢疏忽或违背,在穿着上保持着端

  • mfc可视化界面_mfc界面开发

    mfc可视化界面_mfc界面开发亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBarProfessionalforMFC和BCGSuiteforMFCv32.2正式发布!新版本改进的功能区和框架标题命令搜索、带有可选复选框的网格日期选择器、带有标签的功能区滑块等,需要最新版的可以点击这里【BCG下载】BCGControlBarProforMFCv32.2正式版下载RibbonBar1.新的全局变量globalData.m_sizeRibbonCategoryPadding和glo.

  • Python 使用sqlalchemy操作MYSQL

    Python 使用sqlalchemy操作MYSQL

发表回复

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

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