有一段代码:
int p(char *a, char*b)
{
while (*a | *b)
{
if (*a ^ *b)
//...
}
}
Run Code Online (Sandbox Code Playgroud)
我真的不知道它在做什么.
编辑:我理解|和^操作员做什么,我只是不知道他们将如何处理char价值观.
我正在使用kinect在F#中做一些事情,但是在使用深度数据时遇到了一些麻烦.我一直在关注本教程:http://digitalerr0r.wordpress.com/2011/06/21/kinect-fundamentals-3-getting-data-from-the-depth-sensor/
有c#例子,我一直试图转换为F#.
这部分代码存在问题:
void kinectSensor_DepthFrameReady(object sender, ImageFrameReadyEventArgs e)
{
PlanarImage p = e.ImageFrame.Image;
Color[] DepthColor = new Color[p.Height * p.Width];
float maxDist = 4000;
float minDist = 850;
float distOffset = maxDist – minDist;
kinectDepthVideo = new Texture2D(GraphicsDevice, p.Width, p.Height);
int index = 0;
for (int y = 0; y < p.Height; y++)
{
for (int x = 0; x < p.Width; x++, index += 2)
{
int n = (y * p.Width + x) * 2; …Run Code Online (Sandbox Code Playgroud) 我必须为家庭作业编写这段代码,但我甚至不知道从哪里开始.这是我必须编写的方法的javadoc.
/**
* Sets a 4-bit nibble in an int
* Ints are made of eight bytes, numbered like so: 7777 6666 5555 4444 3333 2222 1111 0000
*
* For a graphical representation of this:
* 1 1 1 1 1 1
* 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* |Nibble3|Nibble2|Nibble1|Nibble0|
* +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*
* Examples:
* setNibble(0xAAA5, 0x1, 0) //=> 0xAAA1
* setNibble(0x56B2, 0xF, 3) //=> …Run Code Online (Sandbox Code Playgroud) 我很惊讶我无法在Google上找到这个简单的问题答案.在检查了十几个不同的页面后,我将在这里问...
根据这个页面,3和5导致1.另外,3 | 5结果是7.我唯一的问题就是:
还有,负数呢?
果然,在java中编写以下内容:
System.out.println(3&5);
System.out.println(3|5);
System.out.println(8&-8);
Run Code Online (Sandbox Code Playgroud)
生成此输出:
1
7
8
Run Code Online (Sandbox Code Playgroud)
但同样,这些结果如何确定/计算?
我想知道浮点数总和是如何工作的.如何使用按位运算对两个双(或浮点)数进行求和?
&,|,^和〜都是python中的按位运算符.&,^和| 对我来说都很好 - 当我拿1 | 0时,我得到1.但是〜给了我奇怪的结果.~1给我-2,而0给我-1.这是因为我使用的是整数还是其他什么?我正在运行python 3.
我希望从〜0得到1,从〜1得到0(整数).这可能吗?
我试图理解按位和移位运算符.我写了一个简单的代码来向我展示一个短类型的位.
class Shift {
public static void main (String args[]) {
short b = 16384;
for (int t = 32768; t > 0; t = t / 2) {
if ((b&t) != 0) System.out.print("1 ");
else System.out.print ("0 ");
}
System.out.println();
b = (short)(b + 2);
for (long t = 2147483648L; t > 0; t = t / 2) {
if ((b&t) != 0) System.out.print ("1 ");
else System.out.print ("0 ");
}
System.out.println();
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
C:\>java Shift
0 1 …Run Code Online (Sandbox Code Playgroud) 从装配书:
应用于位串的另一组逻辑运算是移位和旋转操作.这两个类别可以进一步细分为左移,左旋,右移和右旋.这些操作对汇编语言程序员非常有用.
和:
另一对有用的操作是向左旋转并向右旋转.这些操作的行为类似于左移和右移操作,但有一个主要区别:从一端向外移出的位在另一端向后移位.
他们在C中的旋转操作是否等同rotate于装配中的操作?
我有以下内容enum:
[Flags]
public enum Status { Nominal, Modified, DirOneOnly, DirTwoOnly, DirOneNewest, DirTwoNewest }
Run Code Online (Sandbox Code Playgroud)
我试图看看该Modified位是否已设置为true并尝试了以下方法:
if(_stateFlags.HasFlag(Status.Modified))
{
//DoStuff
} //Found out why this doesn't work after reading docs.
Run Code Online (Sandbox Code Playgroud)
和
if((_stateFlags & Status.Modified) == Status.Modified)
{
//DoStuff
}
Run Code Online (Sandbox Code Playgroud)
后者是我进一步研究使我相信会起作用的方法.但是,当我这样做时_stateFlags = Status.DirTwoOnly,上述陈述仍然似乎在评估true哪个让我感到困惑.
我做了一些根本错误的事吗?
为什么3右移32等于3而不是0。
我在nodeJs和Java中得到了这些结果