字节:
**
类型/编译器 | 16位编译器 | 32位编译器 | 64位编译器 |
---|---|---|---|
void | 0 | 0 | 0 |
char | 1 | 1 | 1 |
char * | 2 | 4 | 8 |
short int | 2 | 2 | 2 |
int | 2 | 4 | 4 |
float | 4 | 4 | 4 |
double | 8 | 8 | 8 |
long | 4 | 4 | 8 |
long double | 8 | 12 | 16 |
long long | 8 | 8 | 8 |
C语言提供6个按位操作
<< 左移 右端补零,操作对象是 任意 int char 这里任意是指有无符号的意思。
>> 右移 无符号数或者是正数不用考虑是左端补0, 负数看实现【一些实现补0,一些保留符号位,这种比较科学吧】
~ 按位取反 【一元运算符】
& 按位与
^ 按位异或
| 按位或
#define lowByte(word) ((uint8_t)(word))
#define highByte(word) ((uint8_t)((word) >> 8))
#define bitRead(val, bit) (((val) >> (bit)) & 0x01)
#define bitSet(val, bit) ((val) |= (1 << (bit)))
#define bitClear(val, bit) ((val) &= ~(1 << (bit)))
#define bitFlip(val, bit) ((val) ^= (1 << (bit)))