c语言 取高字节 效率,C语言里怎样提取一个十六进制数的最高位?

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

琉璃皇后1慕染

推荐于 2016.01.16

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:49%    等级:9

已帮助:763人

“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的最高位

02分享举报

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值