int是32位,现在为方便只写4为即可,因为数比较小。
2的二进制表示 0010,3的二进制0011,5的二进制0101.
&的优先级高于|的优先级。
1、&先计算
0011 &0101 两个操作数都为1才为1,结果0001。
2、|再计算
0001 | 0011 只要有一位为1即为1,结果0011。
所以最后结果为3。
需要根据您定义的参数类型(float,double,int或者其他类型)来求解,_煌牟问? “” 符号的操作是不同的,浮点型的精度也是不一样的,如果是整型那么23等于0,如果是浮点型,不同电脑结果或有少许的偏差
这是一个位运算表达式啊<<表示算术左移,用来将一个数的二进制位序列左移若干位,高位左移后溢出,舍弃不用,在右补0。
如2<<3,
把十进制值2转成二进制数补码:00000010
把2的二进制位向左移动3位,高位左移后溢出(以左为高),舍弃不用,在右边补0:
把00000010向左移动三位,最左边三个0溢出——>00010,
然后再右边补三个0——>00010000
再将这个二进制码转成十进制数字就是16。
还有两个相关的移位运算符:
>>
表示算术右移,用来将一个数的二进制位序列右移若干位,移到右端的低位被舍弃,最高位则移入原来高位的值。
>>>
表示逻辑右移,用来将一个数的二进制位添零右移若干位,即向右移动若干位,移到右端的低位被舍弃,最高位添零。它也叫无符号右移