标签: bit-manipulation

反向按位运算符

我有一个很好的搜索,花了几个小时的浪费时间,我不能做一个简单的反转位:(

Dim result = VALUE >> 8 And &HFF
Run Code Online (Sandbox Code Playgroud)

我有现有的代码从文件中读取VALUE(一个UInt16),该位是否转移到它.我想要做的是反过来,所以可以使用上面的现有代码保存和阅读.

我已经阅读了一些比特移位并阅读了这篇伟大的Code Project文章,但它也可能是拉丁语.

c# vb.net bit-manipulation

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

为什么将a = 1向左移31位然后向右移31位,它变为-1

特定

int a = 1;(00000000000000000000000000000001),

我做的只是

a=(a<<31)>>31;
Run Code Online (Sandbox Code Playgroud)

我认为a应该仍然1在这个陈述之后(我认为没有改变).但事实证明是-1(11111111111111111111111111111111).谁知道为什么?

c++ bit-manipulation

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

为什么按位AND操作16和017会产生意外结果?

我有以下代码:

#include <iostream>
using namespace std;

int main() {
    int val = 16;
    printf("%d\t%d\t",val,val & 017);

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

为什么输出

16   0
Run Code Online (Sandbox Code Playgroud)

并不是

16   16
Run Code Online (Sandbox Code Playgroud)

正如我所期望的布尔操作

16 AND 17 = 16
Run Code Online (Sandbox Code Playgroud)

c++ bit-manipulation

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

设置一下后打印变量

我试图在8位变量中设置一点.每次在设置特定位后打印变量时,我总是将值设为1.

uint8 value;
value = (1<<1 || value)
printf(%x \n,value); //prints 1 instead of 2
value = (1<<2 || value)
printf(%x \n,value); //prints 1 instead of 4
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation

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

交换给定整数中的两位

我看到了一些解决方案,但看起来很复杂。

在n,m个位置的两位之间交换的最有效方法是什么?

int swapBits(int num, int nPostion, int mPosition);
Run Code Online (Sandbox Code Playgroud)

c byte bit-manipulation bit bitwise-operators

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

将字节转换为位数组?C

我想当时读取二进制文件字节,然后将该字节的位存储到整数数组中。同样,我想将 1 和 0(其中 8 个)的整数数组作为字节写入二进制文件?

c bit-manipulation

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

需要帮助理解C中的左移操作符

我有一些理解左移操作符的问题.我知道如果向左移位x位数,那么将数字乘以2几位乘以移位的位数.

但考虑一下这个程序:

int a=4,*pA=&a,r3;
printf("%d\n",pA);
printf("%d\n",(*pA<<2));
r3=pA-(*pA<<2);
printf("%d",r3);
Run Code Online (Sandbox Code Playgroud)

它分别打印出pA和(*pA << 2),如果要减去这两个,它将不等于表达式中写入的r3,关闭4次,即int的大小.但是你需要考虑int的大小,因为你有pA和(*pA << 2),并且它们的减法不等于它的预期.

任何帮助表示赞赏......

为了记录,我对打印出指针的实际值不感兴趣,但实际上它的地址被移位了2位.我不明白正在发生的过程.

c bit-manipulation

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

为什么这个unhash函数不能反转这个哈希?

我写了一个用于密码和密钥生成的散列函数,但很快意识到能够反转散列是非常有价值的,所以我写了一个相反的函数,但是,它起作用了.我不明白为什么这个DOESNT工作.

function hash64(n:uint):uint
{
    n = (~n) + (n << 21);
    n = n ^ (n >> 24);
    n = (n + (n << 3)) + (n << 8);
    n = n ^(n >> 14);
    n = (n + (n << 2)) + (n << 4);
    n = n ^ (n >> 28);
    n = n + (n << 31);
    return n;
}

function unhash64(n:uint):uint
{
    n = (~n) - (n >> 21);
    n = n ^ (n << 24); …
Run Code Online (Sandbox Code Playgroud)

hash actionscript cryptography bit-manipulation actionscript-3

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

将具有不同位长的两个大整数可逆编码为一个整数

我想将两个可能具有不同最大位长的大整数编码为一个整数。第一个整数是有符号的(可以是负数),而第二个是无符号的(总是非负数)。如果位长度分别为mn,则返回整数的位长度应小于或等于m + n

只是n(但不是m)是预先已知的,并且是固定的。作为示例,将使用该解决方案将61+位的带符号纳秒时间戳与256位的无符号随机性相结合,以形成带符号的317+位唯一标识符。

我正在使用最新的Python。有一个相关的预先存在的问题,在特殊情况下()m == n解决此问题。

python integer bit-manipulation uniqueidentifier

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

如何在C中获取无符号8位类型的最高有效位

我正在尝试获取C中无符号8位类型的最高有效位。

这就是我现在正在尝试做的事情:

uint8_t *var = ...;
...
(*var >> 6) & 1
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?如果不是,那会是什么?

c bit-manipulation bit-shift

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