读书人

关于位运算的一个有关问题

发布时间: 2012-05-28 17:59:54 作者: rapoo

求助,关于位运算的一个问题~
比如a&=0xf5

这里的意思应该是 a=a&0xf5 也就是进行与运算吧?

那么 用什么办法 可以还原a&0xf5的值呢? 是什么运算?试了几种都不行……

求回答 或者提供一个大致的思路也行 谢谢了哈

[解决办法]
还原不了了,信息都已经丢失了。假设只有两个二进制位。
假设a=0b11,那么a&=0b01后a就变为0b01了,a的可能值有0b01和0b11
信息已经丢失不可能还原了。
[解决办法]
楼主,你想多了,还原不了的,因为0&0==0 0&1==0 ,给你结果0和其中一个0,你根本不知道另外一个是1还是0
[解决办法]
操作是不可逆的,
3 = 00000011
(&) 5 = 00000101
00000001

操作后,你并不能知道原来的3最后第二位是1还是0.
[解决办法]
& 运算符的用意, 本来就是让一个数值保留你仅仅希望保留的位,对于你不希望保留的位,就设为0.
所以,这个运算符一般只用在2个地方:
1) 判断一个数值的某一位或某几位是 1 或 0 ,
2) 设置一个数值的某些位为 0

这些操作都是不可逆的, 就好像你 a%5 == 1 , 那么a是1?还是6? 或者是其他? 不知道,因为该操作也是不可逆的 .

读书人网 >C语言

热点推荐