我有一个很好的搜索,花了几个小时的浪费时间,我不能做一个简单的反转位:(
Dim result = VALUE >> 8 And &HFF
Run Code Online (Sandbox Code Playgroud)
我有现有的代码从文件中读取VALUE(一个UInt16),该位是否转移到它.我想要做的是反过来,所以可以使用上面的现有代码保存和阅读.
我已经阅读了一些比特移位并阅读了这篇伟大的Code Project文章,但它也可能是拉丁语.
特定
int a = 1;(00000000000000000000000000000001),
我做的只是
a=(a<<31)>>31;
Run Code Online (Sandbox Code Playgroud)
我认为a应该仍然1在这个陈述之后(我认为没有改变).但事实证明是-1(11111111111111111111111111111111).谁知道为什么?
我有以下代码:
#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) 我试图在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) 我看到了一些解决方案,但看起来很复杂。
在n,m个位置的两位之间交换的最有效方法是什么?
int swapBits(int num, int nPostion, int mPosition);
Run Code Online (Sandbox Code Playgroud) 我想当时读取二进制文件字节,然后将该字节的位存储到整数数组中。同样,我想将 1 和 0(其中 8 个)的整数数组作为字节写入二进制文件?
我有一些理解左移操作符的问题.我知道如果向左移位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位.我不明白正在发生的过程.
我写了一个用于密码和密钥生成的散列函数,但很快意识到能够反转散列是非常有价值的,所以我写了一个相反的函数,但是,它起作用了.我不明白为什么这个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
我想将两个可能具有不同最大位长的大整数编码为一个整数。第一个整数是有符号的(可以是负数),而第二个是无符号的(总是非负数)。如果位长度分别为m和n,则返回整数的位长度应小于或等于m + n。
只是n(但不是m)是预先已知的,并且是固定的。作为示例,将使用该解决方案将61+位的带符号纳秒时间戳与256位的无符号随机性相结合,以形成带符号的317+位唯一标识符。
我正在使用最新的Python。有一个相关的预先存在的问题,在特殊情况下()m == n解决此问题。
我正在尝试获取C中无符号8位类型的最高有效位。
这就是我现在正在尝试做的事情:
uint8_t *var = ...;
...
(*var >> 6) & 1
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?如果不是,那会是什么?
bit-manipulation ×10
c ×5
c++ ×2
actionscript ×1
bit ×1
bit-shift ×1
byte ×1
c# ×1
cryptography ×1
hash ×1
integer ×1
python ×1
vb.net ×1