您的位置:首页 > 其它

布尔代数运算总结

2011-06-11 14:08 316 查看
布尔代数运算总结

交换性 a | b = b | a

结合性 a & b = b & a

分配性 (a | b) | c = a | (b | c)

同一性 a | 0 = a

a & 1 = a

消除性 a & 0 = 0

相消性 ~(~a) = a

分配性 a | (b & c) = (a | b) & (a | c)

相补性 a | ~a = -1

a & ~a = 0

幂等性 a & a = a

a | a = a

吸收性 a | (a & b) = a

a & (a | b) = a

De morgan'low ~(a & b) = ~a | ~b

~(a | b) = ~a & ~b

R G B 颜色

0 0 0 黑色

0 0 1 蓝色

0 1 0 绿色

0 1 1 蓝绿色

1 0 0 红色

1 0 1 红紫色

1 1 0 黄色

1 1 1 白色

p && *p++ 避免引用空指针

!(x ^ y) 判断 x == y

数 字长w

8 16 32

uMax 0xFF 0xFFFF 0xFFFFFFFF

TMax 0x7F 0x7FFF 0x7FFFFFFF ((unsigned int)(~0))>> 1

TMin 0x80 0x8000 0x80000000

-1 0xFF 0xFFFF 0xFFFFFFFF

0 0x00 0x0000 0x00000000

取相反数 ~x+1

产生掩码 (1<<k)-1

2^k-1 = (1<<k)-1

以下的W表示二进制的位数

T2U w(X) = x + 2^w, x < 0 //无符号转有符号

x , x >= 0

U2T w(X) = x , x < 2^(w-1) //有符号数转无符号

x - 2^w, x >= 2^(w-1)

C 处理同时饮食有符号和无符号数的表达式的处理方式为

如梦运算数一个是有符号的,另一个是无符号的,

C隐含地将有符号参数强制类型转换为无符号数。

这种处理方法,对算数操作没有大的影响

对 < > == 关系操作符有影响

比如 printf("%d", -5 < 0U);

载断 k 位 = x mod 2^k z = (short int)(int)x // x mod 2 ^ 16

补码加法

x + y = x + y - 2^w, 2^(w-1) <= x + y //正溢出

= x + y , -2^(w-1) <= x + y < 2^(w-1) //正常

= x + y + 2^w, x + y <= -2^(w-1) //负溢出

无符号乘法 与 有符号乘法

x * y = (x * y) mod 2^w

整数除法

(x < 0 ? (x - (1<<k) -1) : x) >> k

x < 0 则有如下

x / y = (x + y - 1) / y

最大INT值:

((unsigned int)(~0)>>1);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: