C语言计算 加 按位与 求解。。

uchar a,b,c,temp1,temp2;
a=0x43;
b=0xfe;
//求a的高四位和b的低四位组成的c
temp1=a>>4;
temp2=b&0x0f;

//问一下这两个式子的区别 加 按位与
//我用第一个计算结果是错的,什么原因
c=temp1+temp2;
c=temp1|temp2;
//后面的式子错了。不求简化,只想知道为什么用加号是错的?
c=temp1<<4+temp2;
c=(temp1<<4)|temp2;

<<的优先级低于+
所以第一个加法的写法实际是c=tmp1<<(4+temp2)
可以写成c=(tmp1<<4)+tmp2
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-09-01
很容易,优先级的问题

c=(temp1<<4)+temp2
第2个回答  2012-09-02
跟运算符优先级的问题

C语言中 移位 和 按位 和 +-*\/ 的优先顺序是怎么样的
a =++num1;这总的来看是一个赋值,把++num1的值赋给a,因为自增运算子在变数的前面,所以num1先自增加1变为5,然后赋值给a,最终a也为5。b=num2++;这是把num2++的值赋给b,因为自增运算子在变数的后面,所以先把num2赋值给b,b应该为8,然后num2自增加1变为 9。 那么如果出现这样的情况我们怎么处理呢?

C语言问题,按位与、按位或、按位异或、按位取反,解释下。
1 ^ 1 = 0,1 ^ 0 = 1,0 ^ 1 = 1,0 ^ 0 = 0;取反运算,单目运算符:~1 = 0,~0 = 1;以上例子 1 代表真,0 代表假。按位运算就是将二进制位的每一位进行如上计算。如 2 | 5,转换为二进制(以 1 字节 8 位为例):00000010 | 00000101,每个二进制位分别进行或运算...

C语言中按位或,与,非是怎么用的,怎么运算?
C语言中指标运算要用pow()函式,例如2的4次方要写成这样:pow(2,4);^在C语言中是一个位操作符,作用是按位异或。注意,pow()函式要包含math.h档案 c语言中for语句是怎么用的 for是C语言中的一个关键字,主要用来控制回圈语句的执行。下面举例说明for语句的使用方法:int i;for(i=0; i i...

怎么在c语言中输出按位与的结果编个程序出来?
\/\/第一个数 define Y 89 \/\/第二个数 int main(void){ int i,c;c=X&Y;\/\/两个数按位与,结果用下面的办法输出 for(i=31;i>=0;i--){\/\/c是32位数,思路就是要输出哪位数,就先把这位数右移到最右边,\/\/然后和1进行位与,这样就把最右边的位筛选出来了。printf("%d",(c>>i)&...

c语言中位与是什么意思
c语言中的按位与运算是一种基本的位运算,它将两个数的每一位进行比较,只有对应的两个二进位均为1时,结果位才为1,否则为0。它通过"&"运算符来实现。例如,数字9和5的按位与运算可以表示为9&5。具体计算过程如下:首先,将9和5转换为二进制表示:9为00001001,5为00000101。然后进行按位与...

C语言100例中的学习使用按位与:
a =077,表示a=八进制数077,也就是二进制数000 111 111,加上符号位就是00000000 00000000 00000000 00111111(int占用4个字节)b=a&3,也就是按位与,00000000 00000000 00000000 00111111& 00000000 00000000 00000000 00000011 = 00000000 00000000 00000000 00000011 也就是说这个时候b = 3 b&=7...

c语言中运算符有哪几种,优先级顺序是怎样
C语言中,运算符除了常见的三大类,算术运算符、关系运算符与逻辑运算符之外,还有一些用于完成特殊任务的运算符。运算符的运算优先级共分为15 级,1 级最高,15 级最低。 在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的结合性所规定...

C语言…按位与,按位或!
是按2进制代码的同位进行运算。例如1010和1101这2个2进制数:按位与为:1010 1101 = 1000对应为同为1时是1,否则为0.按位或为:1010 1101 = 1111只要同位的两个全为零时得零,否则为1

c语言位运算符的用法
c语言位运算符的用法如下: 一、位运算符C语言提供了六种位运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右移 1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补...

c语言中按位与按位或是什么意思
整数在计算机中用二进制的位来表示,C语言提供一些运算符可以直接操作整数中的位,称为位运算,这些运算符的操作数都必须是整型的。按位与运算按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。只要对应的二个二进位都为1时,结果位就为1。参与运算的两个数均以补码出现。

相似回答