记录昨天的面试

               悲剧的网络竟然没保存下来,又得在写一遍,就记录一下面试官想要我回答正确但我却没有回答出的那道题:

         用一个函数实现一个八位二进制数的反转?

         网上答案很多,一搜一大吧,就把一个比较容易理解的方法贴在这里以供参考:

          uint8 bin8_reserve(uint8 data)

           {

                       data=(((data&0xf0)>>4)|((data&0x0f)<<4));

                       data=(((data&0xCC)>>4|((data&0x33)<<4));

                       data=(((data&0xAA)>>4|((data&0x55)<<4));

                     return data;

           }

       回来翻了一下书,复习了一下移位操作的相关知识,移位分为逻辑移位和算术移位,它们的区别就是在进行右移时是否考虑符号位,在C语言中对无符号数的移位操作都是逻辑移位,但是对于有符号数进行算术右移和逻辑右移是有很明显差别的,到底是进行逻辑移位还是算术移位,这是由编译器决定的,不同的编译器环境下产生的结果可能不一样,所以在程序中若采用了有符号数的右移位操作,那么该程序是不可移植的。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值