标签: bitwise-operators

理解PHP&(&符号,按位和)运算符

我经常($var & 1)在我的代码中使用,如果$var是奇数则返回true,如果是偶数则返回false.

但"&"究竟做了什么?

php bit-manipulation operators bitwise-operators

60
推荐指数
5
解决办法
3万
查看次数

bithifting如何在Java中工作?

我有这样的声明:

假设byte的位值x是00101011.结果是x>>2什么?

我该如何编程呢?有人能解释我在做什么吗?

java bitwise-operators

59
推荐指数
5
解决办法
11万
查看次数

57
推荐指数
5
解决办法
6万
查看次数

为什么补码通过printf表现不同?

我正在阅读关于按位运算符的章节,我遇到了1的补码运算符程序,并决定在Visual C++上运行它.

int main ()
{
   unsigned char c = 4, d;
   d = ~c;
   printf("%d\n", d);
}
Run Code Online (Sandbox Code Playgroud)

它给出了有效的输出: 251

然后我决定直接打印值,而不是d用作变量来保存~c~c.

int main ()
{
   unsigned char c=4;
   printf("%d\n", ~c);
}
Run Code Online (Sandbox Code Playgroud)

它给出了输出-5.

它为什么不起作用?

c variables types bitwise-operators unsigned-char

57
推荐指数
6
解决办法
4663
查看次数

零填充位移0有什么用呢?(a >>> 0)

我刚刚在Mozilla Javascript文档中看到了这篇文章:

var len = this.length >>> 0;  
Run Code Online (Sandbox Code Playgroud)

我不太明白为什么要这样做.有什么好处呢填零,右移this.length0呢?据我所知,它什么都没做.它是否安全地为其建立默认值len,即使this.length它不是整数?这可能是这样吗?如果是这样,>> 0和之间的区别是>>> 0什么?

javascript bitwise-operators

55
推荐指数
0
解决办法
5117
查看次数

'x << ~y'在JavaScript中代表什么?

'x << ~y'在JavaScript中代表什么?

我理解按位SHIFT操作执行此操作:

x << y AS x * 2y

而代字号~运算符可以:

~x AS -(x+1)
Run Code Online (Sandbox Code Playgroud)

所以,我假设如下:

5 << ~3 AS 5 * 2-4 or 5 * Math.pow(2, -4)

它应该导致0.3125.

但是,当我运行5 << ~3它时,结果1342177280.

什么是逐步解释?这种操作组合如何以及为什么会导致1342177280而不是0.3125

(这个问题类似于Stack Overflow问题什么是按位运算符?关于按位运算SHIFT符.)

javascript bitwise-operators

55
推荐指数
5
解决办法
3305
查看次数

是否可以使用整数运算实现按位运算符?

我面临一个相当特殊的问题.我正在研究一种不支持按位运算的体系结构的编译器.但是,它处理签名的16位整数算术,我想知道是否有可能只使用以下方式实现按位运算:

  • 加法(c = a + b)
  • 减法(c = a - b)
  • 分部(c = a/b)
  • 乘法(c = a*b)
  • 模数(c = a%b)
  • 最小值(c = min(a,b))
  • 最大值(c = max(a,b))
  • 比较(c =(a <b),c =(a == b),c =(a <= b),et.c.)
  • 跳转(goto,for,et.c.)

我希望能够支持的按位操作是:

  • 或者(c = a | b)
  • 并且(c = a&b) …

discrete-mathematics bitwise-operators compiler-optimization

53
推荐指数
3
解决办法
2万
查看次数

为什么Javascript负数不总是真或假?

-1 == true;        //false
-1 == false        //false
-1 ? true : false; //true
Run Code Online (Sandbox Code Playgroud)

谁能解释一下上面的输出?我知道我可以通过比较0来解决这个问题,但我很感兴趣.我希望至少有一个草率的equals语句是真实的,因为它们进行了隐式类型转换,我当然没想到三元组会得出完全不同的结果.

javascript boolean-logic bitwise-operators

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

理解按位AND运算符

我一直在阅读Kochan的书"Objective-C编程"中的Objective-C中的位运算符.

我对这一部分非常困惑,尽管到目前为止我已经真正了解了大部分内容.

以下是本书的引用:

按位AND运算符

按位AND运算经常用于屏蔽操作.也就是说,可以容易地使用该运算符将数据项的特定位设置为0.例如,语句

w3 = w1 & 3;
Run Code Online (Sandbox Code Playgroud)

w3将w1的值与常数3进行逐位AND运算.这与将w中的所有位设置为相同的效果,除了最右边的两位为0,并保留w1中最右边的两位.

与C中的所有二进制算术运算符一样,二进制位运算符也可以通过添加等号用作赋值运算符.该声明

word &= 15;
Run Code Online (Sandbox Code Playgroud)

因此执行与以下相同的功能:

word = word & 15;
Run Code Online (Sandbox Code Playgroud)

此外,它具有将除最右边的四位字之外的所有字设置为0的效果.当使用常量执行按位运算时,以八进制或十六进制表示法表示常量通常更方便.

好的,这就是我想要了解的内容.现在,我对这整个概念非常困惑,我只想找一点澄清,如果有人愿意帮我解决这个问题.

当书现在引用"设置所有位"时,所有位......究竟是什么.这不仅仅是第二个基数中的0或1,换句话说,二进制?

如果是这样,为什么在第一个例子中除了"最右边2"到0之外的所有位?它是2,因为它是3 - 1,从我们的常数中取3吗?

谢谢!

bit-manipulation objective-c operators bitwise-operators

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

是否定义了有符号整数的按位运算结果?

我知道有>>符号整数的行为可以依赖于实现(具体来说,当左操作数为负时).

怎么样的人:~,>>,&,^,|?当他们的操作数有符号内建类型(整数short,int,long,long long),都将结果保证是相同的(中位含量),好像他们的类型是无符号的?

c c++ bitwise-operators

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