标签: bitwise-or

结果之间的按位OR

我想知道是否可以在MySQL查询中进行按位OR.我有一个查询:

SELECT `value` FROM `table` WHERE `code`='4'
Run Code Online (Sandbox Code Playgroud)

它返回一个值数组,但我想要一个唯一值,其值为所有值的按位 OR.可以从MySQL或我应该委托给PHP吗?

即上面的查询返回此值列表:

value
-----
1
5
4
2
7
8
Run Code Online (Sandbox Code Playgroud)

我希望结果是这些值1的OR 5 | 4 | 2 | 7 | 8 = 15

mysql bitwise-or

1
推荐指数
1
解决办法
181
查看次数

为什么在'|'时使用'+'运算符 非常好吗?

这更像是一个哲学问题,但我在代码库中已经多次看到这一点,并且并不真正理解这种编程方法是如何形成的.

假设您必须将位2和3设置为某个值x而不更改uint中的其他值.这样做是非常微不足道的,也是一项常见的任务,我倾向于这样做:

uint8_t someval = 0xFF; //some random previous value
uint8_t x = 0x2; //some random value to assign.
someval = (somval & ~0xC) | (x << 2); //Set the value to 0x2 for bits 2-3
Run Code Online (Sandbox Code Playgroud)

我见过代码或使用'|' 使用'+':

uint8_t someval = 0xFF; //some random previous value
uint8_t x = 0x2; //some random value to assign.
someval = (somval & ~0xC) + (x << 2); //Set the value to 0x2 for bits 2-3
Run Code Online (Sandbox Code Playgroud)

它们是等价的吗?
是.

这个比那个好吗?
仅当您的硬件没有按位OR指令时,我才从未见过没有按位OR的处理器(即使是小型PIC10处理器也有OR指令).

那么为什么有些程序员倾向于使用'+'代替'|'?我在这里错过了一些非常明显,优秀的强大优化吗?

c++ add bitwise-operators bitwise-or

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

使用| 在java中

我遇到了一个java代码,其中常量已按以下方式定义

 static final char   FM = (char) (ConstantsSystem.DOUBLE_BYTE_SEP | 0xFE);
Run Code Online (Sandbox Code Playgroud)

什么是使用|这个代码?

java bitwise-operators bitwise-or

1
推荐指数
1
解决办法
86
查看次数

(C++) 在按位或运算时出现错误“非法指令(核心转储)”

所以,我仍在学习按位运算,无法弄清楚为什么会发生此错误。我在谷歌上搜索过它,看起来这个错误可能是在弄乱堆栈时发生,或者在某些情况下,它与 CPU 架构有关。我试过用不同的标志进行编译,这些标志应该有帮助,但我无法让它工作。

这是快速的代码:

int corners = 0;
for (int i = 0; i < 8; i++)
{
    const ivec3 cornerPos = leaf->min + CHILD_MIN_OFFSETS[i];
    const float density = Density_Func(vec3(cornerPos));
    const int material = density < 0.f ? MATERIAL_SOLID : MATERIAL_AIR;
    corners |= (material << i);
}
Run Code Online (Sandbox Code Playgroud)

并且错误“非法指令(核心转储)”发生在该行

corners |= (material << i);

这是调试器的输出:

Signal received: SIGILL (Illegal instruction) For program, pid 26,118
Run Code Online (Sandbox Code Playgroud)

我将给出这个循环的输出(它永远不会超过第一个循环)。这是 couts 的代码:

int corners = 0;
    std::cout<<"corners(outside loop): "<<corners<<std::endl;

for (int i = 0; i < …
Run Code Online (Sandbox Code Playgroud)

c++ runtime-error bit-shift bitwise-or c++14

1
推荐指数
1
解决办法
9291
查看次数

按位或逻辑或的区别

当涉及到 C++ 中的布尔变量时,按位运算和逻辑 OR 运算有什么区别?在整数域中,这是很清楚的,但是当涉及到布尔值时,它们两者之间是否有任何性能优势或行为变化?

布尔 VAR = TRUE , BOOL VAR2= TRUE

VAR有区别吗| VAR2 和 VAR || VAR2

c++ boolean bitwise-or logical-or

1
推荐指数
1
解决办法
167
查看次数

iOS中的UIControlEvents可以一起进行OR运算吗?

假设我有以下代码:

[somevalue_field 
  addTarget:self 
  action:@selector(somevalue_fieldDidChange:)
  forControlEvents:UIControlEventEditingDidEnd | UIControlEventTouchDragExit |
                   UIControlEVentTouchDragOutside ];
Run Code Online (Sandbox Code Playgroud)

这些UIControlEvents的按位ORing是否实际上在组合它们的效果方面一起工作,这样如果这些事件中的任何一个发生,选择器中的方法将触发?

或者是否会导致太多位串在一起以适合一个整数?

objective-c ios bitwise-or uicontrolevents

0
推荐指数
1
解决办法
559
查看次数

"|"运算符的特殊用法,如catch(NullPointerException | NumberFormatException e)

我得到了这个想法,因为eclipse(Java)它显示了向catch子句添加多个异常的可能性,如下所示:

String someInput;
int int1;

try {
    int1 = Integer.parseInt(someInput);
} catch (NullPointerException | NumberFormatException e) {
    e.printStackTrace;
}
Run Code Online (Sandbox Code Playgroud)

那么这是否意味着我也可以这样做?:

boolen bool1 = (int1 == (int2 | int3));
Run Code Online (Sandbox Code Playgroud)

或者像这样投射一个物体?:

(obj1 | obj2) someObject;
Run Code Online (Sandbox Code Playgroud)

或者总是指定像这样的对象?:

obj1 | obj2 someName;
Run Code Online (Sandbox Code Playgroud)

谢谢你的任何答案,艾伦

java casting boolean identifier bitwise-or

0
推荐指数
1
解决办法
67
查看次数

当将一个或多个数字常量按位值作为参数传递时,为什么phpinfo()函数会给出错误的结果?

我正在使用PHP 7.2.8

我执行以下代码:

<?php
  phpinfo(2 | 8); //Bitwise OR operator is used
?>
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常,并给了我预期的结果。

然后,我尝试将数值常量按位值作为参数传递,即将数字2和8的二进制等效项作为参数传递。请看下面的代码:

<?php
  phpinfo(00000010 | 1000000); //Bitwise OR operator is used
?>
Run Code Online (Sandbox Code Playgroud)

我得到了上述代码的意外输出(即,第二个代码中传递了数字常量的按位值)。

为什么这样?

请参阅此链接,以获取有关要传递给phpinfo()函数的参数的描述以及要传递的每个数字常量的含义的信息。

请让我知道我在哪里出错了?我只是想按照手册中的描述执行代码。

谢谢。

php constants function phpinfo bitwise-or

0
推荐指数
1
解决办法
53
查看次数

这个“|”是什么意思 React 文档中的符号代表什么?

我试图理解 React 源代码,代码库中的许多文件将我引导到共享/ReactTypes.js 文件。

在该文件中,有一个符号“|”

根据我自己的研究,我发现这是按位 OR (|) 运算符,解释该运算符的 MDN 文档指出:

在任一操作数或两个操作数的对应位为 1 的每个位位置返回 1。

这对我来说没有任何意义,所以我继续在网络上进行一些研究,包括 Google 和 Stackoverflow,但我在 React 的源代码中找不到任何与其功能相关的内容。

export type ReactNode =
  | React$Element<any>
  | ReactPortal
  | ReactText
  | ReactFragment
  | ReactProvider<any>
  | ReactConsumer<any>;
Run Code Online (Sandbox Code Playgroud)

任何人都可以向我解释一下这一点,或者至少给我发送一些资源来帮助我了解此 React 源代码中发生的情况。

另外,如果您知道重现此代码的任何方法,请告诉我。

提前致谢!!

bitwise-or reactjs

0
推荐指数
1
解决办法
311
查看次数

当无符号字符与 11100000 进行 OR 运算时,为什么按位 OR 运算无法按预期工作?

我无法理解为什么操作 'c | 11100000' 似乎不起作用。但我也注意到 'c | 10000000' 按预期工作。

#include <stdio.h>

int main()
{
    unsigned char c, c1;
    
    c = c & 0;
    c = c | 11100000;
    printf("%o \t", c);
    
    /** prints 140 ***/
    
    
    c = c & 0;
    c = c | 111;
    c << 5;
    printf("%o", c);
    
    /** prints 157 **/

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation bit-shift bitwise-operators bitwise-or

0
推荐指数
1
解决办法
206
查看次数

反转数字中的位值

我想反转数字中的位值。

该方法应该按位数反转值,如下所示:

public static void main(String[] args) {

    int res = flipBit(7,1);
}

public static int flipBit(int value, int bitIndex) {

    String bin = Integer.toBinaryString(value);
    char newChar = (char) (bin.charAt(bitIndex) ^ bin.charAt(bitIndex));
    
    //pseudo code
    bin[bitIndex] = newChar;    
    
    return Integer.parseInt(bin);
}
Run Code Online (Sandbox Code Playgroud)

java integer bit-shift bitwise-operators bitwise-or

0
推荐指数
1
解决办法
153
查看次数

无符号int的按位OR,没有警告

我正在尝试重写以下代码:

$ cat t.c 
int main()
{
  unsigned int i = 0;
  int v = 3;
  i |= v;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用最近的gcc,您应该收到以下警告:

$ gcc -Wconversion t.c
t.c: In function ‘main’:
t.c:5:3: warning: conversion to ‘unsigned int’ from ‘int’ may change the sign of the result [-Wsign-conversion]
Run Code Online (Sandbox Code Playgroud)

在保持代码可读性的同时,我应该如何重写按位OR以避免此警告.unsigned int i是库代码中非常深的东西,所以我无法将其更改为int.

c bitwise-or

-1
推荐指数
1
解决办法
69
查看次数

如何在C中评估以下代码?

#include<stdio.h> 

int main()
{ 
  int const SIZE=5; 
  int expr; 
  double value[SIZE]={2.0,4.0,6.0,8.0,10.0}; 
  expr=1|2|3|4; 

  printf("%f",value[expr]); 
  return 0; 
}
Run Code Online (Sandbox Code Playgroud)

如何评估上述代码?特别声明:

expr=1|2|3|4;
Run Code Online (Sandbox Code Playgroud)

c bitwise-operators bitwise-or

-4
推荐指数
2
解决办法
139
查看次数