第十一章 C语言的最小数据单位——位
1.位-bit:表示一个二进制数码0或1,是电子计算机中最小的数据单位。
2.字节-Byte:8个二进制位构成1个“字节”,它表示作为一个完整处理单位的8个二进制数码。是存储空间的基本计量单位。
3.原码:0表示正号,1表示负号。用二进制表示。
最大值为127,最小值为-127。
4.反码:正数的反码与原码相同,负数的反码对原码各位取反(符号位除外)。
5.在反码中0是有正负之分的。
6.补码:正数的补码与原码相同,负数的补码是原码各位取反再加1(符号位除外)
a.使用符号位能与有效值部分一起参加运算,从而简化运算规则。
b.使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。
7.位运算符:
按位与-&:都是1,才是1。作用:清0,保留某些位,取某个数中某些指定位
按位或-|:都是0,才是0。
按位异或-^:不同为1,相同为0。作用:将某些位翻转。交换两个变量的值。
取反-~:1变0,0变1。~比算术、关系、逻辑及其它位运算符,优先级都高。
左移-<<:各二进制位全部左移若干位,高位丢弃,低位补0。
右移->>:各二进制位全部右移若干位,正数高位补0,负数高位补1。
8.位段-(位域,位字段)P305
把一个字节中的二进制位划分为几个不同的区域,并说明每个区域的位数。
9.位段是一种特殊形式的结构体类型中的成员。
10.定义形式:
struct 位段结构名
{
位域列表
}
如:
struct pack
{
int a:8;//a占用8个二进制位数
int b:2;
int c:6;
}
11.一个位段必须存储在同一个字节中,不能跨两个字节。
12.位段可以无位段名,用来填充或调整位置。无名的位段是不能使用的。
13.位段的引用和结构成员引用相同,位段变量名.位段名。
14.给位段赋值时位段能存储的最大值。如data.b占2位,存储的最大值为3.如果赋值给9(1001),就会溢出,只能存储低2位,(01)即1.