C语言,关于位运算符的,这个怎么分析啊,有点看不懂,求高手解答啊!谢谢!!

#include<stdio.h>
#include<stdlib.h>
int main()
{
int x=0;
int a=11110011;
x=a&0x11111111;
x+=((a&0x22222222)>>1);
x+=((a&0x44444444)>>2);
x+=((a&0x88888888)>>3);

x=((x&0xF0F0F0F0)>>4)+(x&0x0F0F0F0F);
x=((x&0xFF00FF00)>>8)+(x&0x00FF00FF);
x=((x&0xFFFF0000)>>16)+(x&0x0000FFFF);
system("pause");
return x;
}

这个程序里有两种位运算符:按位与(&)、按位右移(>>)。
先看优先级,这个程序里“()”的优先级最高,“>>”次高,“&”优先级第3;
位运算符都是按二进制运算的,所以要先将所有参与位运算的数字转换为二进制。
&:只有对应的两个二进制位均为1时,结果才为1,否则为0,例如:
010010
& 000110
____________
000010
>>:将操作数右移n位相当于该数除以2的n次方,例如:60>>2=15。
至于实现什么功能,你自己算出结果来分析吧
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-11-19
这里都是按位与运算和右移运算符,一个个看, 知道是这样计算就行了,具体计算是计算机的事情追问

这个程序主要想实现什么功能呢?

第2个回答  2012-11-20
程序出自何处?以我看: 没有功能,就是老师让学生练习移位操作的,要是单片机的程序的话可能就有别用的了
第3个回答  2012-11-19
把位运算符看懂,就差不多会了。追问

这个程序主要想实现什么功能呢?

C语言位运算符
在C语言的世界里,位操作符是程序员手中不可或缺的工具,它们犹如二进制代码中的魔术师,对整型数据(char, short, int, long)的底层位进行精细操控。这里有六位小能手,它们分别是:1. 按位与(&): 仿佛是两位二进制数的亲密对话,只有当两个对应位都是1时,结果才会亮起1的灯。它在清零和取...

C语言位运算符:与、或、异或、取反、左移和右移!
C语言的世界里,隐藏着一组神秘的代码符咒——位运算符,它们分别是:&(按位与)、|(按位或)、^(按位异或)、~(取反)、<>(右移)。这些运算符,如同魔法般,让整型数据(char, short, int, long)在二进制的舞台上跃动,展示着它们独特的魔力。首先,我们来看看&(按位与):它就像一...

关于C语言 位运算符OP=的用法
首先,0XFF不是一个变量,而是一个16进制常量。在C语言中以0X开头的规定为16进制常量。所以,假如value是一个双字节的int型变量,那么他一共占16位 ,与0XFF做&运算,相当于与二进制0000 0000 1111 1111做&运算,那么显然就是保持低8位(也就是右边8位)不变,而使余下位置(左边8位)都为0了...

C语言中的位运算符是怎么取反的
用4位表示的话可以填0101,或者是8位的11110101

C语言中按位运算符之间有没有类似数学上加减乘除的运算律的关系
按位运算其实是每一位隔离处理的,但是在处理逻辑过程上是相同的 知道了这一点,结合逻辑中的与,或,取反可以得到任何的逻辑(数学中叫完备集)在C语言中你强调的那些分配律什么的其实就是逻辑过程,这个在C语言中是最基本的思想。(注意括号的优先级是高于这几个逻辑符号的,要实现这几个运算律就...

关于C语言的运算符有个问题,请各位达人帮解答下!谢谢!!
因为是指针,所以值是不变的,例如*q=3,*p=2,这个条件*p++=*q--后输出语句还是相当于*p=*q,=3了,这个++和--不影响,因为指针的++--符号是改变的地址值,数值是不变的,例如输出内存地址%x的话这个条件就其作用了,改变了地址值!

C语言的例题看不懂,请进来帮帮我
x||-1.5,"||"是逻辑或运算符。这个的意思是,x和"-1.5"进行或运算,a||b 的运算规则是:若a,b之一为真(就是非0),则a||b表达式为真(就是值为1)。所以x||-1.5的值也为真,就是1。注意,"-1.5"虽然是负数,但也是非0!! "a>b"为假故值是0 所以你的程序的结果应该是...

C语言的逻辑运算和按位运算怎么区分?
1、作用的不同 &&、||是逻辑运算符,用于从左到右求表达式的真值。假设x=1;y=2;那么x&&y=1;x||y=1。&、|是位运算符,是对x,y进行位运算,x,y取值如上,那么有x&y=0;(x的二进制表示为00,y的二进制表示为10)。2、判断这个表达式的真或假的不同 &和|既是逻辑运算符也是位...

c语言中 关系运算符||左边为1则右边就不再执行 关于此规定的迷惑
优先级是这样的((!a)||(b&&c))。先执行!a,因为不为零,所以后面就不执行了。

C语言中“按位运算符”是什么意思?
一、位运算符C语言提供了六种位运算符:\\x0d\\x0a\\x0d\\x0a& 按位与\\x0d\\x0a| 按位或\\x0d\\x0a^ 按位异或\\x0d\\x0a~ 取反\\x0d\\x0a<< 左移\\x0d\\x0a>> 右移\\x0d\\x0a\\x0d\\x0a1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有...

相似回答