逻辑运算和位运算——与或非、左移和右移
##逻辑运算和位运算——与或非、左移和右移
与:当且仅当两个数的位都为1时,为真。
或:两个数只要任意一个为1时,就为真。
非:真为假,假为真。
这次重点还是放在左移运算和右移运算上。下面代码的注释简化了int型的字节数。int实际上是4个字节。
左移运算:
1 | #include <stdio.h> |
数据左移时候,最左边位将被丢弃,同时在最右边补0。
右移运算:
1 | #include <stdio.h> |
右移的时候,最右边的位将被丢弃,但右移要稍微复杂一些。如果数字是一个无符号数值,则用0填补最左边位。如果数字是一个有符号数值,则用根据符号位填补最左边的位。也就是说,对于无符号数,用0填补最左边的位,丢弃最右边的位;对于有符号数,用1填补最左边的位,丢弃最右边的位。