我希望将一个签名的int32存储到一个未签名的uint32中,以便以后可以从中提取一个int32。uint32本身的值在存储像这样的整数时不使用,但不幸的是,我不能使用联合。我目前做这件事的方法是简单地转换它:
int32 signedVar = -500;
uint32 unsignedVar = uint32(signedVar);
func(int32(unsignedVar)); // should supply the function with -500
这似乎是可行的,但我担心它可能不是可移植的,而且可能会有不必要的转换发生在幕后,因为我希望这是一个没有操作。
-500或任
我正在读“第13章:运算符重载:正确操作”,
它说明了一元运算符
~ (__invert__) Bitwise inverse of an integer, defined as ~x == -(x+1). If x is 2 then ~x == -3.
我在这里很困惑。如果x是2,那么~x == -3怎么会这样呢?
你能提供一些提示吗?
我有C代码作为
#include<stdio.h>
int main()
{
unsigned int a = 5;
unsigned int b = 4;
printf("%u",a-b);
}
上面代码的输出是1,我认为C内部计算的结果是取-4的2的补码,然后使用补码算法来评估结果。如果我解释错了什么,请纠正我。(在这里,我谈论的是C语言如何使用二进制计算结果)
嗨,伙计们,我只是对二进制减法有点迷惑。我有以下疑虑:
1) Why not just subtract normally(subtracting two binary number without converting to any other form) using binary numbers?
2) Why cant we use singed numbers to subtract, why wont it work?
3) Why is 2's compliment used?
已经问了不少类似的问题,但我还是很困惑。
unsigned int a = -1;
int b = ~0;
if (a == b)
printf("%u\t%d", a, b);
返回
4294967295 -1
我理解这些值是如何存储在C中的,以及为什么它会显示这些数字,但我的问题是,a==b是如何在这里返回true的?
以下代码(这是一个简化版本)过去在jdk1.6中运行良好,现在在JDK1.7下断言失败。
ByteBuffer buffer = ...;
buffer.mark();
char c = (char) buffer.get();
buffer.reset();
switch(c) {
...
case 'H':
byte b = buffer.get();
//Here I get -106 for b and 72 for (byte) c
assert( b == ((byte) c) );
break;
...
}
我阅读了
Can anyone tell me what is the data payload to change the system mode of the ZigBee based thermostat?
I have found the cluster ID and attribute ID for the system mode i.e 0x0201 (cluster ID) & 0x001C (attribute ID) but unable to frame the data payload.
Zigbee walker output
Digi International
在下面的程序中,我很难理解为什么c等于-61: main() {
unsigned int a = 60; // 60 = 0011 1100
unsigned int b = 13; // 13 = 0000 1101
int c = 0;
c = ~a; //-61 = 1100 0011
printf("Line 4 - Value of c is %d\n", c );
} 我确实理解NOT运算符在0011 1100上是如何工
我正在读一本关于汇编语言的书。我在那本书里偶然发现了这些句子。
Consider the value “-64”. The eight bit two’s complement value for this number is
0C0h. The 16-bit equivalent of this number is 0FFC0h.
我不能理解这两个句子。有人能告诉我64的8位2的补码是0c0h吗?16位的等价物是0ffc0h吗?如果可能的话,请给我看一下计算结果。提前谢谢。