关于C语言 位运算符OP=的用法

value&=0XFF;value是一个整型变量,它等价于;value=value&0XFF;这个语句的作用是保持value右边的8位不变,把余下的位置都设置为0.这是书... value &= 0XFF;
value是一个整型变量,它等价于;
value = value & 0XFF;
这个语句的作用是保持value右边的8位不变,把余下的位置都设置为0.

这是书上的一段例子 我想问的是value = value & 0XFF;
这个语句的作用是保持value右边的8位不变,把余下的位置都设置为0.这段话是什么意思 0XFF不是一个变量么?(位AND运算符&将把运算术中对应的位联合起来,如果俩个位都是1,则生成的位为1,否则,生成的位为0。)
他说这个语句的作用是保持value右边的8位不变,把余下的位置都设置为0.?
unsigned int male = 0X1;
unsigned int french = 0X2;
unsigned int german = 0X4;
unsigned int italian = 0X8;
unsigned int payBracket = 0X10;

这些当中的0X1 0X2 0X4 0X8 0X10 全都指的是十六进制么?那么他们所对应的十进制应该分别是多少呢?
展开
 我来答
gbwzx
2008-08-17 · TA获得超过458个赞
知道小有建树答主
回答量:201
采纳率:0%
帮助的人:369万
展开全部
是的,正是这样~~
首先,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
tattackor
2015-06-08 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:1054万
展开全部
  1. OP=是一种二目运算符的简便用法,a OP=b 意义等同于 a = a OP b;

  2. 只有二目运算符的位运算才可以使用OP=形式。

    下面是二目运算符的位运算:

    a & b 相同位的两个数字都为1,则为1;若有一个不为1,则为0。
    a | b 相同位只要一个为1即为1。
    a ^ b 相同位不同则为1,相同则为0。
    a << b 左移b位
    a >> b右移b位

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱悦山神微身3A
2008-08-17 · TA获得超过282个赞
知道小有建树答主
回答量:330
采纳率:0%
帮助的人:0
展开全部
0xFF是十六进制的写法,二进制是0000 0000 1111 1111,&是按位与操作,假设value是32003,也就是说二进制0111 1101 0000 0011,那么同0xFF执行按位与操作的话结果就是0000 0000 0000 0011了~~。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式