我有以下几点:取与具有不同的位长度
void calculate(unsigned long num1, unsigned long num2){
int32_t invertednum2 = ~(num2); // yields 4294967040
printf("%d\n", invertednum2); // yields 255
// num1 is 3232236032
int32_t combine = (int32_t) num1 & num2;
printf("%d\n", combine); // yields 0???
}
我想和NUM1和NUM2,这样的结果将是:
000000000000000011111111
我不知道如果我我正确地用两种不同的比特长度或者如果我应该投。
任何帮助,将不胜感激!
感谢
1.使用'unsigned'整数类型。 2.你说你想要什么结果,但是你没有说出你的输入是什么。 (好吧,我们可以推断'num2'是什么,但我们不知道'num1'可能是什么。)目前还不清楚它的意图是什么。也许更多的例子会有帮助。 – jamesdlin 2013-04-18 06:24:56
为什么使用int32_t而不是uint32_t? – 2013-04-18 06:25:22
也许你不知道和AND的含义。你会得到正确的结果。 (我不知道为什么有人认为签名与无符号是相关的......结果将与uint32_t相同。) – 2013-04-18 06:30:16