鍍金池/ 問答/C/ 如何獲取二進(jìn)制指定位上的值??

如何獲取二進(jìn)制指定位上的值??

例如下面這個(gè)例子:

char name[100] = "grayVTouch";

// 低位多出2位(這種做法是錯(cuò)誤的,因?yàn)榈臀欢喑鰞晌?,高位卻丟失了兩位,導(dǎo)致數(shù)據(jù)不完整)
// 如何在已有數(shù)據(jù)上,不丟失原有數(shù)據(jù)的情況下插入位??
*name <<= 2;

// 設(shè)置第一位、第二位值為 1
// 第一位表示性別,0 女,1 男
// 第二位表示長(zhǎng)幼,0 幼,1 長(zhǎng)
// 然后 name 表示的含義就是,姓名叫做 grayVTouch,性別男,年長(zhǎng)。

// 掩碼
int mask1 = 0x1;
int mask2 = 0x2;

// 設(shè)置第一位
*name |= mask1;
*name |= mask2;

// 現(xiàn)在要獲取第一位的值,怎么獲取??
// 第二位的值,怎么獲?。??
// 如何除去插入的2位,獲取原始的值??

0. 如何在已有數(shù)據(jù)上,不丟失原有數(shù)據(jù)的情況下插入位??
1. 現(xiàn)在要獲取第一位的值,怎么獲取??
2. 第二位的值,怎么獲取??
3. 如何除去插入的2位,獲取原始的值??

回答
編輯回答
孤影

c++ std庫(kù)里有個(gè)類bitset, 是專門做這個(gè)事的

這里有源碼, 如果你一定要c, 可以看看這個(gè)
https://gcc.gnu.org/onlinedoc...

重點(diǎn)是left_shift和right_shift

字符串和bitset的轉(zhuǎn)換可以看這里

http://blog.csdn.net/magicyan...

2017年2月15日 11:59