标签: bitwise-operators

2454
推荐指数
25
解决办法
111万
查看次数

按位运算符的真实世界用例

以下按位运算符的一些实际用例是什么?

  • XOR
  • 要么

language-agnostic bitwise-operators

217
推荐指数
17
解决办法
8万
查看次数

为什么我们通常使用`||`而不是`|`,有什么区别?

我只是想知道为什么我们通常||在两个布尔值之间使用逻辑OR 而不是按位OR |,尽管它们都运行良好.

我的意思是,看看以下内容:

if(true  | true)  // pass
if(true  | false) // pass
if(false | true)  // pass
if(false | false) // no pass
Run Code Online (Sandbox Code Playgroud)
if(true  || true)  // pass
if(true  || false) // pass
if(false || true)  // pass
if(false || false) // no pass
Run Code Online (Sandbox Code Playgroud)

我们可以用|而不是||吗?同样的事情&&&.

java bitwise-operators

215
推荐指数
10
解决办法
9万
查看次数

Java中的double tilde(~~)是什么意思?

在浏览Guava的源代码时,我遇到了以下一段代码(hashCode内部类的实现的一部分CartesianSet):

int adjust = size() - 1;
for (int i = 0; i < axes.size(); i++) {
    adjust *= 31;
    adjust = ~~adjust;
    // in GWT, we have to deal with integer overflow carefully
}
int hash = 1;
for (Set<E> axis : axes) {
    hash = 31 * hash + (size() / axis.size() * axis.hashCode());

    hash = ~~hash;
}
hash += adjust;
return ~~hash;
Run Code Online (Sandbox Code Playgroud)

两者的adjusthashint秒.从我所知道的关于Java,~意味着位求反,所以adjust = …

java gwt bit-manipulation bitwise-operators

192
推荐指数
1
解决办法
2万
查看次数

169
推荐指数
6
解决办法
19万
查看次数

什么是位屏蔽?

我对C编程很新,我遇到了掩码.有人可以向我解释位屏蔽的一般概念和功能吗?非常感谢例子.

c terminology bit-manipulation bitmask bitwise-operators

162
推荐指数
2
解决办法
24万
查看次数

&和&&之间的区别

我一直认为&&Java 中的运算符用于验证它的布尔操作数是否都是true,并且&运算符用于对两个整数类型执行逐位运算.

最近我开始知道&运算符也可以用来验证它的布尔操作数是否都是true,唯一的区别是它检查RHS操作数,即使LHS操作数是假的.

&Java内部的运算符是否内部过载?或者这背后有其他一些概念吗?

java boolean operators bitwise-operators

156
推荐指数
8
解决办法
16万
查看次数

使用xor运算符进行布尔检查是一种好习惯吗?

由于其简洁性,我个人喜欢在布尔检查的上下文中有意义的,或者,^运算符.我更喜欢写作

if (boolean1 ^ boolean2)
{
  //do it
}
Run Code Online (Sandbox Code Playgroud)

if((boolean1 && !boolean2) || (boolean2 && !boolean1))
{
  //do it
}
Run Code Online (Sandbox Code Playgroud)

但是我常常从其他有经验的Java开发人员(不仅仅是新手)那里得到一些困惑,有时会评论它应该如何仅用于按位操作.

我很好奇关于^运营商使用的最佳实践.

java conditional xor bitwise-operators logical-operators

149
推荐指数
8
解决办法
13万
查看次数

任何语言都有一元布尔切换运算符吗?

所以这更像是一个理论问题.C++和直接基于它的语言(in)(Java,C#,PHP)具有快捷运算符,用于将大多数二元运算符的结果赋值给第一个操作数,例如

a += 3;   // for a = a + 3
a *= 3;   // for a = a * 3;
a <<= 3;  // for a = a << 3;
Run Code Online (Sandbox Code Playgroud)

但是当我想切换一个布尔表达式时,我总会发现自己写的东西就像

a = !a;
Run Code Online (Sandbox Code Playgroud)

a是一个很长的表达式,这会很烦人.

this.dataSource.trackedObject.currentValue.booleanFlag =
    !this.dataSource.trackedObject.currentValue.booleanFlag;
Run Code Online (Sandbox Code Playgroud)

(是的,德米特定律,我知道).

所以我想知道,是否有任何语言都使用一元布尔切换运算符,这将允许我缩写a = !a而不重复表达式a,例如

!=a;  
// or
a!!;
Run Code Online (Sandbox Code Playgroud)

让我们假设我们的语言有一个适当的布尔类型(比如bool在C++中)并且a属于那种类型(所以没有C风格int a = TRUE).

如果你能找到一个文档化的源代码,我也有兴趣了解一下,例如C++设计者是否考虑在bool成为内置类型时添加类似的运算符,如果是这样,为什么他们决定反对它.


(注意:我知道有些人认为作业不应该使用 =,++并且+=不是有用的操作员,而是设计缺陷;让我们假设我对他们感到高兴,并专注于为什么他们不会扩展到bool).

language-agnostic bitwise-operators negation

140
推荐指数
11
解决办法
1万
查看次数

转换为二进制并在Python中保持前导零

我正在尝试使用Python中的bin()函数将整数转换为二进制.但是,它总是删除我实际需要的前导零,这样结果总是8位:

例:

bin(1) -> 0b1

# What I would like:
bin(1) -> 0b00000001
Run Code Online (Sandbox Code Playgroud)

有办法做到这一点吗?

python binary formatting bitwise-operators

129
推荐指数
6
解决办法
13万
查看次数