高分!!!int a=1,b=2;则a|b的值是3是为什么?达人赐教!!!

来源:百度知道 编辑:UC知道 时间:2024/05/25 14:53:15
当我将b改为3,a|b值还是为3;将b改为4,值为5;将b改为5值还是5。。。依此类推,随b2,3,4,5,6,7,8,9。。。的变化,a|b值为3,3,5,5,7,7,9,9。。。。
这是为什么呢?|不是逻辑或么?逻辑或是都0才0我知道,但是我在vc上演示的结果却是
(1)a b都是奇数,即3|3为3,3|5为7,3|7为7,3|9为11为什么会这样?;
(2)a b一奇一偶,比如3|4为7,3|5为7,3|6为7,3|7为7,3|8为11这是怎么算的阿?
(3)a b都为偶数时,我也不明白,比如2|2为2,2|4为6,2|6为6,2|8为10。。。这又是怎么算的阿?
(4)此外,还有个问题,就是0|10为10,书上为什么说为1么?这是为什么?难道是因为书上说的1是逻辑真true?那什么时候用逻辑真什么时候用10呢?
这个问题对我很重要,望大人解答!全国2级在即,速度要快啊!解释得好我在加分!

|位或运算,从你这么多的问题中我可以看出你对位运算一无所知,建议查一些相关资料仔细研读

参与运算的量要化为二进制,再按位进行计算,按位或的运算规则是 1|0=1 0|0=0 1|1=1:

例如:
3|7在运算时要将3和7化为二进制形式,即3=>011,7=>111,然后利用上面的规则对这两个二进制数字对应的每一位进行或运算,即:

从左向右,
第一位或运算:0|1=1
第二位或运算:1|1=1
第三位或运算:1|1=1
所以:
3|7=011|111=111

再将111转换为十进制数就是7,因此,3|7=7

| 是二进制或运算
转换成二进制后,对应位置如果有'1',结果为1,两者都为0,结果位为0
逻辑或是||(两个)

a|b 这个符号是按位或运算,将一个数化为2进制再接位进行或运算,比如2|2=10|10.取或后还是10还是2
再如。3|7=11|111.最后还是111即7,3|9=11|1001取或为1011,即13

1

|这是2进位标志的计算:
2为10,1为01
10|01=11(3)

1d=00000001b
2d=00000010b
|为按位或运算,
所以,00000001b|00000010b=00000011b=3d
而且,由或运算规则知:
只要a和b均<4,且a和b不同时等于1或2,
结果总为3.
只要a和b均<8,且a和b不同时等于1,2,4,
结果总为7.
由此可见:若a,b均小于2^n,且a和b不同时等于2的任何小于n的方次的数,其结果总为2^n-1.
Are you understand?