这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 怎么交换两个二进制数最后两位呢。

共19条 1/2 1 2 跳转至

怎么交换两个二进制数最后两位呢。

工程师
2014-10-29 00:12:17     打赏
反正意思是最后两位如果是10就换成01,01就换成10。例如11111110换成11111101。或者11111101换成11111110

工程师
2014-10-29 08:20:10     打赏
2楼
其他值不能变

助工
2014-10-29 08:43:19     打赏
3楼
假设你要改变值为a,b=a&0x01提取第一位,b左移一位。c=a&0x02提取第二位,c右移一位。d=a&0xfc+b+c。这时d就是a的交换结果

专家
2014-10-29 09:04:56     打赏
4楼
其实和1异或 就是取反,和0异或就是不变,所以  只需要和0000 0011异或就可以了

专家
2014-10-29 09:07:38     打赏
5楼
lz看看是否符合你的意思。

工程师
2014-10-29 09:13:40     打赏
6楼
这样就会变换值了,会吧11也异或成00。

专家
2014-10-29 09:15:16     打赏
7楼
哦,你只要交换??11的话,还是11,00还是00?

专家
2014-10-29 09:19:53     打赏
8楼

使用位取反操作就可以了。

比如:a^=(1<<1);a^=(1<<0);


高工
2014-10-29 09:35:57     打赏
9楼
这个好像不行吧,如果最后两位是11或者00呢

高工
2014-10-29 09:42:32     打赏
10楼

b = a | 0x01;  //获取最后一位

a = (a & 0xfe) | ((a & 0x02) >> 1);  //交换倒数第二位到最后

a = (a & 0xfd) | (b << 1);  //把原先的最后一位放到倒数第二位


共19条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]