标签: bitwise-operators

当一个数字写为 0x00...x 意味着什么

假设我试图在 C 中创建一个用于按位运算的掩码,例如

uint32_t Mask = 0x00000003; 
Run Code Online (Sandbox Code Playgroud)

x 是什么意思?我看到很多用 0x 格式写的数字,我不明白为什么,也找不到对我来说真正有意义的解释,也许我没有寻找正确的东西。

c bitwise-operators

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

&~ 是什么意思?

这是什么& ~(minOffsetAlignment - 1)意思?

这是否意味着析构函数的地址?

这是我从中得到的代码片段。

VkDeviceSize 是 uint64_t。

VkDeviceSize getAlignment(VkDeviceSize instanceSize, VkDeviceSize minOffsetAlignment) 
{
    if (minOffsetAlignment > 0) 
    {
        return (instanceSize + minOffsetAlignment - 1) & ~(minOffsetAlignment - 1);
    }
    return instanceSize;
}
Run Code Online (Sandbox Code Playgroud)

c++ bit-manipulation bitwise-operators

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

Python - 左移和右移长数字给出意想不到的结果

我有以下内容

a = 340282366920938463463374607431768211455
b = 127
print(a >> b)
Run Code Online (Sandbox Code Playgroud)

结果值为 1,但我不知道为什么。有什么建议吗?我做得对吗?结果是预期的吗?

具体要求是:

Shift A, right by B, where:

A = 340282366920938463463374607431768211455
B = 127
Run Code Online (Sandbox Code Playgroud)

python bit-shift bitwise-operators python-3.x

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

如何仅使用 C 中的按位运算符来检查值是否大于 7?

对于此问题,如果参数大于 7,则要求返回 1,否则返回 0。

例如,如果 x 为 8,则该函数将返回 1。如果 x 为 7,则该函数将返回 0。

唯一允许的合法运算符是 (! ~ & ^ | + << >>),它禁止使用其他任何运算符,例如 -、for 循环、while 循环、if 语句等。

我们可以假设系统使用 2 的补码和整数的 32 位表示,以算术方式执行右移,并且在将整数移位超过字大小时会出现不可预测的行为。

我知道不使用 - 操作的减法可以用 ~ 来完成,但说实话,我不知道如何从逻辑上思考这个问题。

c bit-manipulation bitwise-operators twos-complement

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

谁能简化这个按位表达式?

在 C++ 中开发 ECS 实现时,我渴望可以简化这个表达式,但老实说,我对按位运算没有足够的信心来弄清楚:

(x & y) == x
Run Code Online (Sandbox Code Playgroud)

如果您有任何关于简化按位表达式的提示,那就太好了,谢谢

编辑:格式化

c++ bit-manipulation bitwise-operators

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

为什么 x&amp;1==0 和 !(x&amp;1) 在 C++ 的 if 语句中不会产生相同的结果?

我在语句中包含这两个条件if来检查是x偶数还是奇数,但似乎在偶数的情况下!(x&1)执行了主体,而没有执行它。ifxx&1==0

考虑到32 或 64 位表示中的1 & 0is和 1 ,我希望两者都给出 0 ,并且如果,比如说,是类似(偶数)的东西,那么它们的按位 和 应该产生 0。因此,我仍然不确定为什么有效。如果我有任何错误的地方,请纠正我。谢谢。0000..01x10010101100!(x&1)

c++ bitwise-operators c++17

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

如何写这个"或"陈述更短,是不是?

fail = 0;   

if (masivs[0][0]>0 | masivs[0][1]>0 | masivs[0][2]>0| masivs[0][3]>0 |masivs[0][4]>0| masivs[0][5]>0|masivs[0][6]>0| masivs[0][7]>0|masivs[0][8]>0|masivs[0][9]>0)
{
    fail = 1;
}   
else {
    fail = 0;
}
Run Code Online (Sandbox Code Playgroud)

我需要检查0行中是否有一些肯定元素,如果是,则需要将失败更改为1.

c c++ arrays bitwise-operators conditional-statements

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

C++ Bitwise XOR ^不工作

C++ Xor是^.所以,如果我:

a ^ b
Run Code Online (Sandbox Code Playgroud)

它应该做一个XOR b

但是当值为4246661时0

4246661 ^ 0 
Run Code Online (Sandbox Code Playgroud)

它打印:4246661当它真的应该是0.

编辑:哇,我离开了一个在线xor计算器,它给了我奇怪的结果..抱歉

我错过了什么吗?

c c++ xor bitwise-operators

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

Python bitwise与布尔运算符

我读通过教程的一个基于Python的交易平台,它是推荐使用按位的(~,&,|),而不是布尔(not,and,or)运营商合并布尔表达式.

类似因素,可以组合过滤器.使用&(和)和|(或)运算符组合过滤器.

有这么好的理由吗?我以前从未见过它.我并不完全确定Python中布尔值的所有属性,但我确实认为在C和C++中,布尔值由整数1或0表示,并且可以这样操作.Python类似吗?在这种情况下,我可以看到一个&|至少是如何工作的.

使用这些按位运算符而不是布尔值的目的是什么?它更快吗?

python bitwise-operators boolean-operations

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

C++中1 << 31的模糊结果

当我们运行以下代码时,为什么1<<31打印18446744071562067968输出?

#include<iostream>
using namespace std;

int main(){
    unsigned long long int i = 1<<31;
    cout<<i; // this prints 18446744071562067968
}
Run Code Online (Sandbox Code Playgroud)

c++ bit-manipulation bit-shift bitwise-operators c++11

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