获取二进制或者16/32位的某一位的值
- 主要是按位与,这样可以把某一位的值给算出来;
- 1&1 = 1; 1&0 = 0;可以看出1与上0/1都等于其本身
- 直接上代码
- 推荐:免费的C语言和linuxPDF文档:传送门
//获取二进制某一位的值
uint8_t get_one_bit_value(uint32_t src, uint8_t bit_num)
{return (uint8_t)((src >> (bit_num - 1)) & 1);
}
int main()
{uint32_t test_v = 0x12345678; //0001[1] 0010[2] 0011[3] 0100[4] 0101[5] 0110[6] 0111[7] 1000[8]uint8_t i, j; uint8_t test_buff[32];for (i = 1; i <= 32; i++){test_buff[i - 1] = get_one_bit_value(test_v, i);}for (i = 1; i <= 8; i++){for (j = 1; j <= 4; j++){printf("%d|", test_buff[(i - 1) * 4 + (j - 1)]);}printf("\n");}
}
打印结果:
//注意打印低位在左
//因为打印的第一位是最低位以此类推
|0|0|0|1| [8]
|1|1|1|0| [7]
|0|1|1|0| [6]
|1|0|1|0| [5]
|0|0|1|0| [4]
|1|1|0|0| [3]
|0|1|0|0| [2]
|1|0|0|0| [1]
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!