C语言里怎样提取一个十六进制数的最高位?
怎样提取一个十六进制数的最高位或者最低位?比如我想把0X30的最高位附给单片机的P1.0端口程序应该怎样编写?思路是什么?...
怎样提取一个十六进制数的最高位或者最低位? 比如我想把 0X30的最高位附给单片机的P1.0端口程序应该怎样编写?思路是什么?
展开
3个回答
展开全部
“C语言里怎样提取一个十六进制数的最高位?”具体解决方案如下:
解决方案1:
你是不是想这样/对于0x30,3是最高位,0是最低位?如果是的话那就这样办:首先不同类型处理方法不同,int型是2字节,伱可以这样最高为提
取,int a=b&0xf09(b为提取对象),最地位int
a=b&0x0f(b为提取对象),long型是4字节伱可以这样,long a=b&0xf000,long
a=b&0x000f;还有什么再问
那稍加修改:int a=b&1000000000000000b,int
a=b&0000000000000001b,long
a=b&10000000000000000000000000000000b,int
a=b&00000000000000000000000000000001b;这是2进制数的位操作,虽然看起来麻烦,但是效率最高,其他还有
方法,但是在单片机中不推荐
如果你学过汇
编这点很好理解,没学过也没事,我现在说给你听,这里提取取位用到的是c语言种的为操作,&(与操作)的定义是:1&1=1,1&
amp;0=0,0&1=0,0&0=0,|(或操作)的定义是:1|1=1,1|0=1,0|1=1,0|0=0,所以要提取二进制中
的某一位,思想是保留那一位,其余为全为0,这样就&操作符就可以轻松做到,比如0011&0001=0001,提取最低位,0011&
amp;1000=1000,提取最高位,还有就是在c语言里int型是2字节,long型是4字节
解决方案2:
楼主的意思应该a=0x30;b=a>>7;得到的b是0x30的最高位
解决方案1:
你是不是想这样/对于0x30,3是最高位,0是最低位?如果是的话那就这样办:首先不同类型处理方法不同,int型是2字节,伱可以这样最高为提
取,int a=b&0xf09(b为提取对象),最地位int
a=b&0x0f(b为提取对象),long型是4字节伱可以这样,long a=b&0xf000,long
a=b&0x000f;还有什么再问
那稍加修改:int a=b&1000000000000000b,int
a=b&0000000000000001b,long
a=b&10000000000000000000000000000000b,int
a=b&00000000000000000000000000000001b;这是2进制数的位操作,虽然看起来麻烦,但是效率最高,其他还有
方法,但是在单片机中不推荐
如果你学过汇
编这点很好理解,没学过也没事,我现在说给你听,这里提取取位用到的是c语言种的为操作,&(与操作)的定义是:1&1=1,1&
amp;0=0,0&1=0,0&0=0,|(或操作)的定义是:1|1=1,1|0=1,0|1=1,0|0=0,所以要提取二进制中
的某一位,思想是保留那一位,其余为全为0,这样就&操作符就可以轻松做到,比如0011&0001=0001,提取最低位,0011&
amp;1000=1000,提取最高位,还有就是在c语言里int型是2字节,long型是4字节
解决方案2:
楼主的意思应该a=0x30;b=a>>7;得到的b是0x30的最高位
2013-04-27
展开全部
伱是不是想这样/对于0x30,3是最高位,0是最低位?如果是的话那就这样办:首先不同类型处理方法不同,int型是2字节,伱可以这样最高为提取,int a=b&0xf09(b为提取对象),最地位int a=b&0x0f(b为提取对象),long型是4字节伱可以这样,long a=b&0xf000,long a=b&0x000f;还有什么再问那稍加修改:int a=b&1000000000000000b,int a=b&0000000000000001b,long a=b&10000000000000000000000000000000b,int a=b&00000000000000000000000000000001b;这是2进制数的位操作,虽然看起来麻烦,但是效率最高,其他还有方法,但是在单片机中不推荐
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-04-27
展开全部
楼主的意思应该a=0x30;b=a>>7;得到的b是0x30的最高位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询