按位移运算符(>>)和按位与运算符(&)的反运算时什么样的

问题描述

比如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

按位移运算符(>>)和按位与运算符(&)的反运算时什么样的的相关文章

link中能不能定义新的运算符,能不能在字符串中使用运算符?

问题描述 link中能不能定义新的运算符,能不能在字符串中使用运算符? link中能不能定义新的运算符,能不能在字符串中使用运算符? 解决方案 不可以,但是可以重载运算符,你要定义什么运算符?

Javascript 按位与运算符 (&)使用介绍_基础知识

复制代码 代码如下: result = [整数1] & [整数1] & 对两个 32 位表达式的每一个位执行按位"与"运算. 如果两个位均为 1,则结果是 1. 否则,结果为 0. 位1 位2 位与 0 0 0 1 1 1 0 1 0 1 0 0 下面的示例演示如何使用 & 位与运算符和 &= 按位与赋值运算符: 复制代码 代码如下: // 9 二进制是 1001,补足32位为 00000000000000000000000000001001 var e

Dart基础-运算符

运算符 dart定义的运算符如下所示 描述 运算符 一元后缀 expr++ . expr– . () . [] . . 一元前缀 -expr . !expr . ~expr . ++expr . –expr 乘法 * . / . % . ~/ 加法 + . - 移位 << . >> 按位与 & 按位或 | 关系和类型判断 >= . > . <= . < . as . is . is! 相等 == . != 逻辑与 && 逻辑或 ||

窥探Swift之需要注意的基本运算符和高级运算符

之前更新了一段时间有关Swift语言的博客,连续更新了有6.7篇的样子.期间间更新了一些iOS开发中SQLite.CollectionViewController以及ReactiveCocoa的一些东西.时隔两月,还得继续更新Swift语言的东西不是.在去年翻译<Swift编程入门经典>(Swift1.0版本,基于Xcode6)这本书时,系统的搞了搞Swift语言,接下来的一段时间内打算持续更新一下相关Swift语言的一些东西, 不过现在已经是Swift2.0版本了,区别还是不小的.并且目前在

运算符 - PHP手册笔记

原文:运算符 - PHP手册笔记 运算符优先级 每种编程语言都有运算符,运算符要学会灵活使用. 运算符拥有不同的优先级和结合方向. <?php var_dump(1 <= 1 == 1); // true var_dump(true ? 0 : true ? 1 : 2); // 2 $a = 1; var_dump(++$a + $a++); // may print 4 or 5 在需要的时候使用括号,可以增强代码的可读性. 算术运算符 取模运算符的结果和被除数的符号相同. 赋值运算符将原

java学习笔记之数据类型 运算符 流程控制

java的基本数据类型 一:整型 1.十进制 2.八进制 八进制数是满8进1,包含0~7的8个数字,在整数前面添加一个"0",表示是八进制数. 3.十六进制 十六进制数是满16进1,包含0~9,a~f的16个数字,再整数前面添加一个"0x"表示是十六进制数. 二:浮点型 1.float:单精度浮点数 声明float类型的浮点数时,要在结尾加F或f. 2.double:双精度浮点数 声明double类型的浮点数时,要在结尾加D或d,浮点类型默认的类型是double,所

MySQL中的运算符

MySQL中的运算符 数据库中的表结构确立后,表中的数据代表的意义就已经确定.而通过MySQL运算符进行运算,就可以获取到表结构以外的另一种数据.例如,学生表中存在一个birth字段,这个字段表示学生的出生年份.而运用MySQL的算术运算符用当前的年份减学生出生的年份,那么得到的就是这个学生的实际年龄数据.这就是MySQL的运算符,所以熟悉并掌握运算符的应用,对于操作MySQL数据库中的数据是非常有用的.下面就来熟悉一下MySQL支持的4种运算符都具备哪些功能. 算术运算符:执行算术运算,例如:

javascript运算符整理

说起运算符,基本上各类编程语言中都会涉及,使用方法大同小异.今天在这里以javascript做简单的整理.   总得来说运算符还是比较的多,大致可以分为以下几种类型: 一元运算符 位运算符 布尔运算符 乘性运算符 加性运算符 关系运算符 等性运算符 条件运算符 赋值运算符 逗号运算符 可以说只要学习过变成语言对这些运算符应该是并不陌生的,只要有逻辑或者是计算都会用到上面的运算符,之前我也是比较零散的使用过,从来没有系统的学习和整理过这些运算符到底怎么使用?之间有什么区别和联系?有什么使用上的技巧

逻辑“非”运算符 (!)

运算 一个表达式执行逻辑非.result = !expression 参数 result 任何变量. expression 任何表达式. 说明 下面的表举例说明了 result 是如何决定的. 如果 expression 是 则 result 是 True False False True 所有一元运算符,如 ! 运算符,按照下面的规则来求表达式的值: 如果应用于 undefined 或 null 表达式,则会产生一个运行时错误. 对象被转换为字符串. 如果可能,字符串被转换为数值.否则会产生一