我的一位同事偶然发现了一种方法来使用按位或者:
var a = 13.6 | 0; //a == 13
Run Code Online (Sandbox Code Playgroud)
我们在谈论它并想知道一些事情.
Math.floor
吗?也许它快一点?(双关语不打算)谢谢.
我想写一个函数,返回最近的2个数的下一个幂.例如,如果我的输入是789,输出应该是1024.有没有任何方法可以实现这一点而不使用任何循环但只使用一些按位运算符?
我对C编程很新,我遇到了掩码.有人可以向我解释位屏蔽的一般概念和功能吗?非常感谢例子.
我需要转换int
为byte[]
一种方法来做它是使用BitConverter.GetBytes()
.但我不确定这是否符合以下规范:
XDR带符号整数是一个32位数据,它编码[-2147483648,2147483647]范围内的整数.整数用二进制补码表示.最高和最低有效字节分别为0和3.整数声明如下:
资源: RFC1014 3.2
我怎样才能进行满足上述规范的int到byte转换?
此代码是否总是评估为false?这两个变量都是两个补码签名的整数.
~x + ~y == ~(x + y)
Run Code Online (Sandbox Code Playgroud)
我觉得应该有一些数字满足条件.我试过测试之间的数字-5000
,5000
但从未达到平等.有没有办法建立一个方程来找到条件的解?
将一个换成另一个导致我的程序中的一个阴险的错误?
我在解决代码问题上遇到了一些问题.通常我首先检查字符是英文字母的上部还是下部,然后减去或添加32
以将其转换为相应的字母.但我发现有人^= 32
做了同样的事情.这里是:
char foo = 'a';
foo ^= 32;
char bar = 'A';
bar ^= 32;
cout << foo << ' ' << bar << '\n'; // foo is A, and bar is a
Run Code Online (Sandbox Code Playgroud)
我已经搜索了这方面的解释并没有找到答案.那么为什么会这样呢?
有一个变量,它包含一些标志,我想删除其中一个.但我不知道如何删除它.
这是我如何设置标志.
my.emask |= ENABLE_SHOOT;
Run Code Online (Sandbox Code Playgroud) 编辑:所以基本上我要写的是1位哈希值double
.
我想映射double
到50/50 true
或false
50/50的机会.为此,我编写了一些选择随机数的代码(仅作为一个例子,我希望在有规律的数据上使用它并仍然得到50/50的结果),检查它们的最后一位并y
在它为1时递增,或者n
如果它是0.
但是,此代码不断导致25%y
和75%n
.为什么不是50/50?为什么这么奇怪,但直截了当(1/3)分布?
public class DoubleToBoolean {
@Test
public void test() {
int y = 0;
int n = 0;
Random r = new Random();
for (int i = 0; i < 1000000; i++) {
double randomValue = r.nextDouble();
long lastBit = Double.doubleToLongBits(randomValue) & 1;
if (lastBit == 1) {
y++;
} else {
n++;
}
}
System.out.println(y + " " …
Run Code Online (Sandbox Code Playgroud) 假设您有两个哈希H(A)
并且H(B)
您想要将它们组合在一起.我已经读到了将两个哈希值组合在一起的好方法XOR
,例如XOR( H(A), H(B) )
.
我发现的最佳解释在这里简要介绍了这些哈希函数指南:
对具有大致随机分布的两个数字进行异或,导致另一个数字仍具有大致随机分布*,但现在取决于这两个值.
...
*在两个数字相结合的每个比特,一个输出0,如果两个比特相等,否则为1.换句话说,在组合的50%,1将输出.因此,如果两个输入位各有大约50-50的机会为0或1,那么输出位也是如此.
你能解释为什么XOR应该是组合散列函数(而不是OR或AND等)的默认操作的直觉和/或数学吗?
我很困惑有点矢量如何工作(不太熟悉位向量).这是给出的代码.有人可以带我走过这个吗?
public static boolean isUniqueChars(String str) {
int checker = 0;
for (int i = 0; i < str.length(); ++i) {
int val = str.charAt(i) - 'a';
if ((checker & (1 << val)) > 0) return false;
checker |= (1 << val);
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
特别是,checker
做什么?
bit-manipulation ×10
c ×4
java ×2
probability ×2
.net ×1
ascii ×1
bitmask ×1
bitvector ×1
c# ×1
c++ ×1
cryptography ×1
double ×1
flags ×1
hash ×1
javascript ×1
nfs ×1
optimization ×1
random ×1
signed ×1
string ×1
terminology ×1
xor ×1