深入理解计算机操作系统(2.1.8 2.1.9)

来源:互联网 发布:单片机助手 编辑:程序博客网 时间:2024/06/10 03:54

C语言的逻辑运算

三种逻辑运算符:||、&&、!
||:只要有一个表达式为真,该运算符的结果就是真。
&&:两个表达式全为真,该运算符的结果才为真。
!:取得相反的结果。
非零的值表示都为真(TRUE),零表示为FALSE。

||和&&运算符,只有第一个参数能确定表达式的值,那么后一个参数将不会进行运算。因此表达式a&&5/a不会造成被零除。

C语言中的位移运算

左移:位向左边移动,左边的位直接截断,右边填0,左移几位就填几个0。
逻辑右移:与左移相反,左边填0,低位截断。
算术右移:低位截断,左边填充最高位的有效值。
这里写图片描述
几乎所有的编译器和机器组合都对有符号数使用算术右移,对于无符号数使用逻辑右移。
使用算术右移主要是面对有符号数,因为有符号数的最高位是符号位,如果右移后,高位进行填,那么可能一个负数右移之后会变成一个正数。
在Java中,为了区分逻辑右移和算术右移,用>>表示算术右移,>>>表示逻辑右移。