c语言中位运算符的用法(C语言中按位或,与,非是怎么用的,怎么运算)

本文目录
C语言中按位或,与,非是怎么用的,怎么运算
位运算符
C提供了六种位运算运算符;这些运算符可能只允许整型操作数,即char、short、int和long,无论signed或者unsigned。
&
按位AND
|
按位OR
^
按位异或
《《
左移
》》
右移
~
求反(一元运算)
按位与操作&通常用于掩去某些位,比如
n
=
n
&
0177;
使得n中除了低7位的各位为0。
按位或操作|用于打开某些位:
x
=
x
|
SET_ON;
使得x的某些SET_ON与相对的位变为1。
按位异或操作^使得当两个操作数的某位不一样时置该位为1,相同时置0。
应该区分位操作符&、|与逻辑操作符&&、||,后者从左到右的评价一个真值。比如,如果x为1、y为2,那么x
&
y为0,而x
&&
y为1。
移位运算符《《和》》将左侧的操作数左移或者右移右操作数给定的数目,右操作数必须非负。因此x
《《
2将x的值向左移动两位,用0填充空位;这相当于乘4。右移一个无符号数会用0进行填充。右移一个带符号数在某些机器上会用符号位进行填充(“算数移位”)而在其他机器上会用0进行填充(“逻辑移位”)。
单目运算符~对一个整数求反;即将每一个1的位变为0,或者相反。比如
x
=
x
&
~077
将x的后六位置0。注意x
&
~077的值取决于字长,因此比如如果假设x是16位数那么就是x
&
0177700。这种简易型式并不会造成额外开销,因为~077是一个常数表达式,可以在编译阶段被计算。
作为一个使用位操作的实例,考虑函数getbits(x,p,n)。它返回以p位置开始的n位x值。我们假设0位在最右边,n和p是正数。例如,getbits(x,4,3)返回右面的4、3、2位。
/*
getbits:
返回从位置p开始的n位
*/
unsigned
getbits(unsigned
x,
int
p,
int
n)
{
return
(x
》》
(p+1-n))
&
~(~0
《《
n);
}
表达式x
》》
(p+1-n)将需要的域移动到字的右侧。~0是全1;将其左移n为并在最右侧填入0;用~使得最右侧n个1成为掩码。
关于C语言 位运算符OP=的用法
是的,正是这样~~
首先,0XFF不是一个变量,而是一个16进制常量。在C语言中以0X开头的规定为16进制常量。
所以,假如value是一个双字节的int型变量,那么他一共占16位
,与0XFF做&运算,相当于与二进制0000 0000 1111 1111做&运算,那么显然就是保持低8位(也就是右边8位)不变,而使余下位置(左边8位)都为0了~~
同样如果value是一个占更多字节的变量,那么除了它的低8位保持原值,其余位上就都置0了~~
_________________________________________
全部都是,这就涉及到16进制到10进制换算问题了啊,你想想给你一个10进制数,比如98765,你可以写成:
9*10^4 + 8*10^3 + 7*10^2 + 6*10^1 + 5*10^0 = 98765
那么一个16进制数也可以通过这样的方式换算成10进制,假如一个16进制数是ACE,那么:
A(也就是10)*16^2 + C(12)*16^1 + E(14)*16^0 = 2766
方法就是这样,你上面问的这几个数自己算一下吧,分别应该是:1,2,4,8,16
c语言中&的作用是什么
&运算符在这里有两种意思,一种是作为取地址符,这是种单目运算符。另外一种是位运算符,这是种双目运算符。
1、取地址符&
一般用C语言定义一个变量,这个变量都会对应一块存储空间,这个存储空间有一个地址。如果你想过得这个地址,就要使用&符号。&后面跟变量名,就可显示该变量在内存中的地址。
2、位运算符&
在这里&表示按位与,表示参加运算的两个数据,按二进制位进行“与”运算。两位同时为“1”,结果才为“1”,否则为0。
C语言操作注意事项
1、&时,左边无论真假,右边都进行运算;如果&&运算左边是假,那么右边的运算就不用做了。这就是所谓的短路现象。尤其在等级考试中,要特别小心这些细节。
2、如果||运算左边为真,那么右边的运算就不用做了。答案就在口诀里,有真为真,不管后面是什么结果,最后一定是真的。

更多文章:
devicenet通讯协议(DeviceNet协议的对象模型)
2026年2月16日 10:00
settimeout在shell(如何写一个shell脚本用sftp上传文件)
2026年3月4日 05:00
2020至2021nba最新排名(nba薪资排名(NBA球员年收入排名出炉))
2026年1月2日 06:00
thefacts课文(a hero’s aspiration课文翻译)
2026年1月5日 01:30
javascript数组拼接(javascript连接许多字符串,且用空格隔开,有没有什么方便的写法)
2026年9月20日 22:00
subject to是什么意思(subject to是什么意思)
2025年10月12日 15:30
jsp文件是用来编写什么的(解释JSP的作用,并列举JSP的特点)
2025年11月5日 13:00
thesettingsun怎么翻译([汉译英]各位高手 来帮下忙 翻译几个词个句子)
2025年9月2日 22:00
headache 中文翻译(翻译成中文 1.have a toothache 2.have an earache3.have a cold)
2025年12月17日 10:15












