所以,我正在遵循 pacman 教程,编码器使用 & 而不是 &&。但他没有解释它的作用。我搜索了一下,它说与 && 不同,& 检查这两个语句。这就说得通了。但编码器不会在比较上下文中使用它。这是他的代码。
screenData[] 是一个 255 个元素的 int 数组。
int ch = 0, pos = 0;
if((ch & 16) != 0) {
screenData[pos] = (int) (ch & 15);
}
Run Code Online (Sandbox Code Playgroud)
请告诉我他为什么这样做以及 & 在这种情况下有什么用处。
#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) &and|运算符的优先级如何绑定到&&and 的优先级||?我正在阅读 15.22
按位运算符和逻辑运算符包括 AND 运算符 &、异或运算符 ^ 和包含 OR 运算符 |。
[...]
这些运算符具有不同的优先级,& 的优先级最高,而 | 的优先级最高。最低优先级。
但是在相应的子句中&&,有关于优先级和优先级的说法||。例如,让我有条件:
boolean a = true;
boolean b = false
boolean c = true;
if ( a && b | c || b){
//to do something
}
Run Code Online (Sandbox Code Playgroud)
你能用例子解释一下前置吗?我想看看标准中的参考。
我正在尝试解决 codefights 中的问题,浏览网络后,我找到了这个解决方案。但我不清楚它是如何工作的。
a * (a & 1) ^ b * !(b & 1) ^ !!(((a ^ b) + 1) & 2)
Run Code Online (Sandbox Code Playgroud) 任何人都可以解释这段代码片段如何将输出提供为23而不是27.我可能对按位运算的理解较少.
#include <stdio.h>
int main()
{
int a = 20, b = 7;
printf("%d%",a|b);
}
Run Code Online (Sandbox Code Playgroud) 我正在研究 Rust 中的按位运算符,我发现
println!("{:X}", 1 << 4);
Run Code Online (Sandbox Code Playgroud)
打印出 10,但 2^4 应等于 16。
进一步实验,使用权力:
let base: i32 = 2;
for i in 1..=5 {
print!("{:X} ", base.pow(i));
}
Run Code Online (Sandbox Code Playgroud)
2 4 8 10 20会在应该打印的时候打印出来
2 4 8 16 32
只是想知道你是否可以向我指出 Rust 文档中强调为什么 Rust 中的二进制文件会这样工作的任何内容?我可以用什么来实现 2^4 = 16 呢?
我必须在C中添加一个数字.我必须在没有像'+','++'等算术运算符的情况下这样做.
我写了以下代码行.
int a = 1234;
int b = 1;
printf("%d", a ^ b);
Run Code Online (Sandbox Code Playgroud)
这工作正常,直到达到整数限制,即,对于32位,它是4294967295.但我在许多其他网站中看到,执行相同的两个数字的AND,然后是XOR和左移.
请告知我的方法是否正确,因为我是C的新手.
例如:
我有一个输入= 0x5A ( 0101 1010 ).
我想存储前4位或后4位.
我正在看这个功能,
int func(int a, int b){
return (a ^ (1 << b));
}
Run Code Online (Sandbox Code Playgroud)
究竟发生了什么?据我所知,它基本上是说"XOR(2 ^ b)",也就是说,是b的幂的xor 2.但除此之外,实际发生了什么,为什么?我想我正在寻找这个公式中的某种模式.