问题描述
比如inti=9;intj=13;intk=(i&j)>>2;怎么通过k与j的相关运算再得到i的值呢
解决方案
解决方案二:
学习一下啊
解决方案三:
不知所云.i是:1001j是:1101i&j是:1001.>>2:结果是0010.就是2
解决方案四:
理论上不可逆的。简单说,因为>>运算,会丢失一些信息。因为当i=11;的时候你会发现k的值依然是2,那么通过2和j的值,怎么知道i是9,还是11呢?也就是说,不可逆。
解决方案五:
位移运算有可能会丢失一部分数据逆运算会出错的
解决方案六:
哪怕是k=i&j的话,都回不去了。因为0&0=0,1&0=0,如果k某位是0,而j的那一位也是0,那你说i的那一位是0还是1呢?
解决方案七:
i是:1001j是:1101i&j是:1001.>>2:结果是0010.就是2
解决方案八:
看来真的是不能进行逆运算2楼的理解能力值得怀疑
解决方案九:
解决方案十:
如果是想达到简单的编码。又方便的解码。便宜又实惠的方法就是异或,异或c编码,再异或c就回来了。按位与和移位(循环移位例外,但java好像没有)会造成源字符单元信息丢失,毕竟能表示的位变少了:比如,10010011,11001001这种1个字节内容你最多能表示的信息量就是256种,但你如果按位与了00001111(15)则有效位就变成了4位,那你所有信息量最大就16种,只要有字符用到了高4位,就必定存在信息丢失。
解决方案十一:
信息丢失就回不来。。。
解决方案十二:
通过逆运算了!
解决方案十三:
这两个运算符都不能逆运算啊。不如楼主说说要实现啥功能,应该会有其他方案吧
解决方案十四:
该回复于2011-04-08 16:40:00被版主删除
解决方案十五:
学习了。不可逆!
时间: 2024-09-09 08:10:47