第1章 0的故事——无即是有
介绍了10进制、2进制,2进制与10进制之间的相互转换方法;
按位计数法;
指数法则:10^0, 10^1, 10^2 等等···
小结的0的占位作用,0 不是空,0代表“无”的存在。
第2章 逻辑——真与假的二元世界
逻辑的完备性需要两个条件保证:完整性 (intergrity)& 排他性(exclusivity)。
完整性解决遗漏(missing)的错误,排他性解决重复(repeat/overlay)的错误。
命题(proposition):能够判断对错的陈述句。
6种对二元命题(是/非,对/错,True/False)的运算与操作:
逻辑非(not): 逻辑与(and):∧ 逻辑或(or):∨
异或(exclusive or):⊕ 相等:= 蕴涵(if A then B):=>
原命题的逆否命题(converse-negative proposition)等价于原命题。
即:原命题为真,则其逆否命题也真,原命题为假,其逆否命题也假。
德摩根定律(De Morgan's law/theorem):
根据逻辑表达式的对偶性,德摩根定律可表示为:非A或非B,等价于非“A∧B”;非A且非B,等价于非“A∨B”。
(注:逻辑表达式的对偶性,即将逻辑表达式中的T & F、与 & 或、A与非A分别互换,即可得到该表达式的否定式)
用于清楚显示逻辑的图示方法:文氏图,又称韦恩图(图1)、卡诺图(图2)。
真假逻辑结果之外的第三种情况——Undefined(未定义)
三值逻辑(ternary logic)包括:带条件的逻辑与(conditional and, short circuit logical and),以&&表示、带条件的逻辑或,以 || 表示、三值逻辑否定,以 ! 表示。
带条件的逻辑与(&&):含义与C、Java中的&&相同,实际含义为:根据条件A,决定是否需要判断B。if (A&&B) {···} 相当于如下条件语句(代码):
if (A) {
if (B) {···
···}
}
这里A可作为运行B操作之前的检查条件,即:if (A&&B){···}意味着:check (A),如果True,则execute(B);如果check (A)结果为False,则不执行B。
带条件的逻辑或( || ):(A || B)的结果,可理解为如A为True,则恒为True,如A为False,则恒为B。
转化为条件语句,可表示为:
if (A) {
···
}else {
if (B)
···}
}
三值逻辑的否定(!):即A的否定式表示为 !A。A-True, !A-False;A-False, !A-True;A-Undefined, !A-Undefined.
三值逻辑的德摩根定律
(!A)||(!B)=!(A&&B)
(!A)&&(!B)=!(A||B)
第2章小结:逻辑的各种表达形式(图3)
第3章:余数——周期性和分组
余数的周期性:以星期计算的周期为例、以指数乘方的个位数变化(如1234567^987654321)为例
奇偶性(parity)的校验:以信息接受和发送方约定在数据中插入奇偶性校验位(parity bit)解决。
以分组的方式解决问题:通过奇偶性,进行准确的分组,进而以分组的方式,而非逐个或计算所有细节的方式解决问题。这是一种通用的思路。
以寻找恋人居住地为例(不关注路径,关注结果,对结果分组以解决最终问题,下图4)、以草席问题为例(下图5)、以哥尼斯堡七桥问题为例(下图6)。
图书信息:
[1] 《程序员的数学》 [日]结城浩 著. 管杰 译. 人民邮电出版社, 北京. 2012-10-01