大华面试题解决办法
大华面试题
unsigned int a = 32;
int b = -6;
unsigned int c = a + b;
C = ?为什么?
去大华面试的时候被问到的问题,被鄙视了。
------解决方案--------------------
我只想告诉你计算机只认识补码,只会二进制加法.
再想告诉你, 有没有符号是编译器的认知, 与计算机没有关系.
所以, 看代码注释 :
unsigned int a = 32;
int b = -6;
unsigned int c = a + b;
C = ?为什么?
去大华面试的时候被问到的问题,被鄙视了。
------解决方案--------------------
我只想告诉你计算机只认识补码,只会二进制加法.
再想告诉你, 有没有符号是编译器的认知, 与计算机没有关系.
所以, 看代码注释 :
- C/C++ code
#include <stdlib.h> #include <stdio.h> #include <string.h> int main() { // 以下所有变量与计算, 均与有无符号无关. unsigned int a = 32; // 32 的二进制: 0x 00 00 00 20 int b = -6; // -6 的二进制 : 0x 00 00 00 06 --> 0x ff ff ff fa unsigned int c = a + b; // c = 0x 00 00 00 20 + 0x ff ff ff fa = 0x 00 00 00 1a printf("%u\n", c); //26 return 0; }
------解决方案--------------------
最后补充下,楼主一定要看到啊,刚忘跟你说+1了,在b进行反转的时候一定要记得+1....