我对编程很陌生,我一直在努力学习一些基本的二进制语言,但有一件事我还是不太明白。这是关于非操作员的规则。
让我说我不想计算这个:62&~29
62 = 111110
29 = 011101据我所知,结果应该是:
100011 = 35但是我从代码得到的结果是34。
所以我的问题是:最后一个值是怎么回事?为何不加到34呢?
希望有人能解释给我听。
祝您今天愉快。
发布于 2016-11-25 09:36:57
~是不非运算符,它是按位补运算符。
它采用操作数的位模式,并将所有0位转换为1位,将所有1位转换为0位。
它对数值的影响将取决于您的实现使用的补码约定,以及用来表示该类型的位数。
在您的具体示例中,62&~29被计算为62&(~29),它是111110&(~011101),它是111110&a100010,111110&a100010是100010,111110&a100010是34。这里我是学究的,并且使用a来代替1位,所以位数等于你类型的宽度。
发布于 2016-11-25 09:41:06
29 --> 011101
not29 --> 100010 (turn 1s into 0 and vice-versa)
62 --> 111110
not29 --> 100010
62¬29 --> 100010 (1 if and only if both are 1, otherwise 0)你怎么拿到35英镑的?
https://stackoverflow.com/questions/40801625
复制相似问题