C语言简单为题(一个字节,取其中某几位)
有一个字节10101010怎么去取其中的某几位呢?比如我想取出第8,7位,应该是10,换算成十进制就是2。...
有一个字节 10101010
怎么去取其中的某几位呢?比如我想取出第8,7位,应该是10,换算成十进制就是2。 展开
怎么去取其中的某几位呢?比如我想取出第8,7位,应该是10,换算成十进制就是2。 展开
2个回答
展开全部
使用掩码,
比如你说的取出第8,7位
那就把这个字节跟 1100 0000 ,也就是192或者说0xC0做按位与操作就好了,
但是结果是1000 0000,你还需要进行一下移位操作
比如
unsigned char a=0xaa; //a= 0xaa = 10101010b
unsigned char b;
unsigned char mask = 0xc0; // 0xc0 = 11000000b
b= a&mask; //b就是 1000 0000b
b = b>>6; //b=2
比如你说的取出第8,7位
那就把这个字节跟 1100 0000 ,也就是192或者说0xC0做按位与操作就好了,
但是结果是1000 0000,你还需要进行一下移位操作
比如
unsigned char a=0xaa; //a= 0xaa = 10101010b
unsigned char b;
unsigned char mask = 0xc0; // 0xc0 = 11000000b
b= a&mask; //b就是 1000 0000b
b = b>>6; //b=2
推荐于2017-09-24
展开全部
用按位与运算:
要取它的高两位,就先将它右移6位,再用11B和移位后的结果按位与即可:
int a,b=0xAA ;/*b=10101010B*/
a=(b>>6)&0x3 ;/*0x3就是11B*/
要取它的高两位,就先将它右移6位,再用11B和移位后的结果按位与即可:
int a,b=0xAA ;/*b=10101010B*/
a=(b>>6)&0x3 ;/*0x3就是11B*/
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询