m765555 发表于 2010-9-27 09:00:59

BitOR函数有点不懂[已解决]

本帖最后由 m765555 于 2011-3-6 12:00 编辑

关于bit开头的这些函数有点不懂,请哪位高手指点一下小弟???多谢了
特别是BitOR

bob 发表于 2010-9-27 10:50:55

搜索下 逻辑 或与非
这方面知识挺多的,应用在数字电路上比较多

在计算机中逻辑或与非已二进制计算的,逻辑判断的结果只有二个值,称这二个值为“逻辑值”("True"或"False"),用数的符号表示就是“1”和“0”。其中“1”表示该逻辑运算的结果是“成立”的,如果一个逻辑运算式的结果为“0”,那么这个逻辑运算式表达的内容“不成立“。
实例中
$x = BitOR(3, 6) ;x == 7 因为 0011 OR 0110 = 0111

BITor 为或运算,或运算当两值均为0时,结果采薇0,其余结果均为1

lixiaolong 发表于 2010-9-27 11:03:55

本帖最后由 lixiaolong 于 2010-9-27 11:08 编辑

回复 1# m765555

BitOR函数

第一个例子:$x = BitOR(3, 6)
0011 (3)
0110 (6)
就像把上面的数值直接覆盖一样
=0111 =7,2进值0111怎么转10进值?
从右边算 *1,*2,*4,*8

算法:
1*1=1 + 1*2=2 + 1*4=4 + 0*8=0 = 7

第二个例子:$x = BitOR(3, 15, 32)
      0011 (3)
      1111 (15)
00100000 (32)
= 00101111 = 47

00101111转10进值
1*1=1 + 1*2=2 + 1*4=4 + 1*8=8 + 0*16=0 + 1*32=32= 47

m765555 发表于 2010-9-27 11:47:22

回复 2# bob


    谢谢,有些了解了

m765555 发表于 2010-9-27 11:49:09

回复 3# lixiaolong


    非常感谢

netegg 发表于 2010-9-27 12:57:53

本帖最后由 netegg 于 2010-9-27 13:06 编辑

位或 - 只要两个同位置的数不全都为0,则为1, 即除了(0,0)均为1
位与 - 只要两个同位置的数不全都为1,则为0,即除了(1,1)均为0
没记错的话好象是这样的

liufenglg 发表于 2010-9-27 15:26:47

回复m765555

BitOR函数

第一个例子:$x = BitOR(3, 6)
0011 (3)
0110 (6)
就像把上面的 ...
lixiaolong 发表于 2010-9-27 11:03 http://www.autoitx.com/images/common/back.gif

从右边算 *1,*2,*4,*8
2^0,2^1,2^2

rolaka 发表于 2010-9-27 17:18:34

状态表...

a b f
0 0 0
0 1 1
1 0 1
1 1 1

有1出1

zps26 发表于 2010-9-27 21:07:18

本帖最后由 zps26 于 2010-9-27 21:09 编辑

bitand 全1为1,其余为0;bitor全0为0,其余为1

auhj887 发表于 2010-9-27 21:32:05

学习了。。。。。。。。。

lsqyx528 发表于 2010-9-29 12:51:12

好人真多。。。

lsqyx528 发表于 2010-9-29 12:51:43

楼主改标题

lanfengc 发表于 2010-9-29 16:30:35

建议搜索逻辑位操作的相关知识。
bitand   位与操作规则是:有0出0,同1出1
bitor      位或操作规则是:有1出1,同0出0
bitnot    位取反    规则是:有0出1,有1出0
bitshift移位操作规则是:假设操作系统字长是32位的,
                        左移时候超过31次,则造成溢出,数据的有效部分将丢失
                        右移的时候,数据从第0位开始自动删除,数据有效位丢失
bitrotate循环移位规则是:假设操作系统字长是32位的,那么将操作数扩展成32位的,
                            左移超过31位自动移位到第0位.
                                          右移小于0位自动移位到第31位。
bitxor    异或操作   规则:同出0,异出1.

例子:
以10和33为例
将10变成二进制数为:0000 0000 0000 0000 0000 0000 0000 1010
   将33变成二进制数为:0000 0000 0000 0000 0000 0000 0010 0001
1.bitand(10,33)
       按照规则结果为:0000 0000 0000 0000 0000 0000 0000 0000
2.bitor(10,33)
         按照规则结果为:0000 0000 0000 0000 0000 0000 0010 1011
3.bitnot(10)
       按照规则结果为:1111 1111 1111 1111 1111 1111 1111 0101
4.bitxor(10,33)
       按照规则结果为:0000 0000 0000 0000 0000 0000 0010 1011
5.bitshift 和bitrotate这两个你查看帮助里的例子。 你可以把计算机的内的二进制移位运算当作一个队列来看,循环移位就是一个环形的队列,队列首尾元素可以相互移动变化。而单纯的移位操作就是一个单向队列,只能向一个方向移动。如果某元素移位超过了这个队列的边界,则该元素自动被丢弃。

navy 发表于 2012-10-10 20:05:01

今天正好看到BitOR(),此贴非常有用。

seniors 发表于 2012-10-10 21:02:57

我在使用中觉得
bitand 、bitor 、bitnot 、bitxor经常用于标志位检测和设置,这样可以更方便
bitshift通常用于替代乘除用算,效率比*/要高(rgb,irgb颜色的分离合成)
bitrotate我不知道用处
页: [1]
查看完整版本: BitOR函数有点不懂[已解决]