之前的笔记搬运
位运算:
“ & ” 与运算符, 相同位的两个数字都为1,则为1;若有一个不为1,则为0。
一般用于取二进制的某一位, 其余位 置0
“ | ” 或运算符, 相同位 只要一个为1即为1。
一般用于将二进制某位 置1, 其余位 不变
“ \^ ” 异或运算, 相同位两个数不同则为1,相同则为0。
可以用于某位取反, 加密, 两数交换
“ ~ ” 取反运算符, 把一个二进制每个数都取反
“ \<\< ” 左移运算符, 把所有二进制按位向左移动
有符号: 低位补0, 高位丢弃
无符号: 低位补0, 高位丢弃
“ >>” 右移运算符, 把所有二进制按位向右移动
有符号: 低位舍弃, 高位补符号位
无符号: 低位舍弃, 高位补0
位段:
位段(bit-field)是以位为单位来定义结构体(或联合体)中的成员变量所占的空间。含有位段的结构体(联合体)称为位段结构。采用位段结构既能够节省空间,又方便于操作。
位段的定义格式为:
1 | type [var]: digits |
那么定义一个位段结构可以像下面这段代码去定义:
1 | struct node |
- 使用位段需注意一下几点:
1 | 1)位段的类型只能是int,unsigned int 两种类型,不能是char型或者浮点型; |