我想在下面提到的操作中确定X的值:
X & 0x08 = 8
在这种场景下如何找出x?
问题是,有很多数字和给定的数字结合起来会得到相同的结果。按位运算并不像算术运算那样是可逆的。
但是,您可以找到一组可能的数字X来产生正确的结果。算法将是相当简单的(和语言不可知的)。
假设我们想要x&b==c
,其中b
是12,c
是8。您需要得到已知数和结果的二进制表示
b == 12 == 00001100
c == 8 == 00001000
X必须满足的规则如下:
c
中每一个等于1的位,b
和x
中的相应位必须等于1c
中等于0的位,如果b
中的对应位为1,则x
中的对应位必须为0。c
中等于0的位,如果b
中的对应位为0,则x
中对应位的值未知。根据这些规则,我们可以确定在我们的示例中
b == 12 == 00001100
c == 8 == 00001000
X == ????10??
在每个?
下,可以替换1或0,将得到正确的结果。例如,00001000
(8)和11111011
(251)都将是有效的解决方案。
如果你问这个,那么可能有几件事你不明白。
X & 0x08 = 8
让我们从最简单的部分开始:0x08。这只是十六进制的表示,这就是计算机程序员想知道单个字节包含什么时的想法。(如果你不知道字节是什么,那就为计算机内存字节
做个谷歌吧,这是一个很重要的概念。)
本例中,0x08只是一个普通的8。在二进制中,这意味着0000 1000。正好设置一位。
现在让我们做&符号。在本例中,它代表按位与。(如果你不知道比特是什么,继续读比特和字节。比特是字节中的一个二进制数字。0或1。)
有几个基本的位操作。
& -- AND -- the corresponding bit in both numbers is set
| -- OR -- if either is set
^ -- XOR -- exclusive or -- one or the other is set
所以如果我们有两个数字,A和B,如下所示:
A 0101 0101
B 0000 1111
则:A&B==0000 0101 A B==0101 1111 A^B==0101 1010
所以...在X和0x08的情况下,0x08==0000 1000。你应该能从这里想出来。
问题内容: 嗨,我有一个表测试,其结构如下: 现在,我需要查询该表(测试),以便获得以下输出。 Oracle 11g中的sql查询是否可以实现?11g中的PIVOT功能是否可以实现? 问题答案: 不,它不能用来完成,但是 可以 用来完成: 当不可用时,我通常会像这样取消透视:
代码: 产出:4 1 [代码连结][1] 前缀运算符的优先级高于逻辑运算符。2.逻辑<代码> 怀疑: > 为什么这里不遵循第一条规则?这不应该是正确的吗? 因此,在printf语句中,的值变为5。 为什么这里违反了一般的优先规则?当两个运算符的优先级相同时,关联性开始起作用。编译器不应该首先查看是计算还是
我试图排序的hashmap的结构的值从高到低。 我在下面创建了一个函数来对数据进行排序。 我收到以下错误: 异常在线程"main"java.lang.ClassCastException:类java.lang.String不能转换为类java.lang.整数(java.lang.String和java.lang.整数在加载器'bootstrap'的模块java.base) 我相信我的错误是由上面的
问题内容: 给定此数组: 我想按价格对元素进行排序以获得: 我怎样才能做到这一点? 问题答案: 没错,您要寻找的功能是。 以下是直接取自手册并适合您的情况的示例: 从PHP 5.5.0开始,您可以使用array_column()代替foreach
问题内容: 这里,是一本字典,并且都是字符串。 当我尝试写入文件时,它报告错误: 问题答案: 正确缩进;您的陈述应在区块内: 在块外部,文件已关闭。