布尔代数运算总结
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);
交换性 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);
相关文章推荐
- 线性代数-矩阵及其运算(总结)
- 数据库中关系代数中的关系运算
- 布尔代数
- 代数加法运算去除高斯噪声及matlab实现
- 线性代数导论33——第三阶段总结
- 20162327WJH四则运算第二周总结
- SQL Server调优系列基础篇(索引运算总结)
- PHP的日期时间运算总结
- 关于Java运算保留小数点总结
- 布尔运算 逻辑运算 移位运算
- 高精度运算总结
- 位运算总结
- 与,或,非,异或进行位运算的总结
- 矩阵运算总结
- 位运算总结2:利用位运算实现加法
- 线性代数-【2-(3-4)】矩阵及其运算
- SQL Server调优系列基础篇(子查询运算总结)
- SQL Server调优系列基础篇(并行运算总结篇二)
- 图像的代数运算