Tag: 位操作

每个枚举项的编号?

是否有可能在java中定义这样的东西? C#代码: public enum Character { A = 1, B = 2, C = 4, D = 8 } … Character ch = /* from user */ if(ch & Character.A) { // some operation… } 例如,如果ch设置为Character.B则if结果将为false : ch = 00000000 00000000 00000000 00000010 A = 00000000 00000000 00000000 00000001 —————————————— & 00000000 00000000 00000000 00000000 […]

32位数的1的数字

我正在寻找一种方法,在32位数字中使用1的数字而不使用其间的循环。 任何人都可以帮助我,并为我提供代码或算法。 提前致谢。

按位操作 – 如何更改现有颜色?

我已经阅读了按位运算符(&| ^),我理解如果我这样做: alpha = 0xFF000000 >> 24 ; blue = 0xFF0000FF & 0x000000FF; red = 0xFFFF0000>>16 & 0x000000FF; green = 0xFF00FF00>>8 & 0x000000FF; 然后,我可以掩盖其他颜色,只有红色或蓝色(等…)组件,如果我这样做 int color = alpha | blue | red | green; 然后我再次重新构建颜色可以这么说。 我很好奇的是如果我想在Java中用两种颜色之间创建双线性插值。 我该怎么做呢? 我想从标准绿色(0xFF00FF00)开始,以黑色(0xFF000000)结束,中间的颜色将从绿色变为深绿色,直到最终变为黑色。 我认为我必须做一些事情,我创建一个bufferedImage,从顶部开始绿色,然后可能创建一个for循环,它将读取前一个像素的颜色,然后移动一些东西,直到以前的颜色的新版本是创建等等。 不幸的是,我不确定如何实现这一点,因为我理解按位运算和理论上的转变,但我不确定如何将它们用于此目的。 任何帮助将不胜感激! 先感谢您!

负逻辑转变

在Java中,为什么-32 >>> -1 = 1? 它不仅仅是-32。 它适用于所有负数,只要它们不是太大。 我发现了 x >>> -1 = 1 x >>> -2 = 3 x >>> -3 = 7 x >>> -4 = 15 给定0> x>一些大的负数 是不是>>> -1与<< 1相同? 但是-32 << 1 = -64。 我已经阅读了两个补充,但仍然不理解推理。

在Java中,当使用位移时,为什么1 << 32!= 1 << 31 << 1?

int a = 1 << 32; int b = 1 << 31 << 1; 为什么a == 1? b是我预期的0。

如何在C / C ++中执行无符号右移(在Java中>> >>)?

如何在C / C ++中执行无符号右移(在Java中>> >>)?

在Java中对两个双打进行异或

如何在JAVA中异或两个双打? 简单的’^’不适用于双打……我是否必须将双精度转换为二进制forms并按位进行? 或者还有其他方法吗?

定义数字是否为三角形数字的最快方法

三角数是从1到n的n个自然数的总和。 查找给定正整数是否为三角形的最快方法是什么? 这是第1200个到第1300个三角形数字的切割,你可以在这里轻松看到一个位模式(如果没有,尝试缩小): (720600, ‘10101111111011011000’) (721801, ‘10110000001110001001’) (723003, ‘10110000100000111011’) (724206, ‘10110000110011101110’) (725410, ‘10110001000110100010’) (726615, ‘10110001011001010111’) (727821, ‘10110001101100001101’) (729028, ‘10110001111111000100’) (730236, ‘10110010010001111100’) (731445, ‘10110010100100110101’) (732655, ‘10110010110111101111’) (733866, ‘10110011001010101010’) (735078, ‘10110011011101100110’) (736291, ‘10110011110000100011’) (737505, ‘10110100000011100001’) (738720, ‘10110100010110100000’) (739936, ‘10110100101001100000’) (741153, ‘10110100111100100001’) (742371, ‘10110101001111100011’) (743590, ‘10110101100010100110’) (744810, ‘10110101110101101010’) (746031, ‘10110110001000101111’) (747253, ‘10110110011011110101’) (748476, ‘10110110101110111100’) (749700, ‘10110111000010000100’) (750925, ‘10110111010101001101’) […]

生成具有可变比例“1”位的随机二进制数

我需要一个函数来生成随机整数。 (现在假设Java long类型,但稍后会扩展到BigInteger或BitSet 。) 棘手的部分是有一个参数P,它指定结果中任何位的(独立)概率为1。 如果P = 0.5,那么我们可以使用标准随机数发生器。 P的一些其他值也易于实现。 这是一个不完整的例子: Random random = new Random(); // … long nextLong(float p) { if (p == 0.0f) return 0L; else if (p == 1.0f) return -1L; else if (p == 0.5f) return random.nextLong(); else if (p == 0.25f) return nextLong(0.5f) & nextLong(0.5f); else if (p == 0.75f) […]

为什么(-1 >>> 32)= -1?

可能重复: 为什么1 >> 32 == 1? -1作为转换为二进制的int由32 1表示。 当我右移31次时,我得到1(31 0和1)。 但当我右移32次时,我再次得到-1。 它不应该等于0吗?