我有一个非常基本的查询。 对于以下代码:
int i = -1;
unsigned int j = (unsigned int) i;
printf("%d",j); // I get 65535 the int limit in turbo C 16 bit compiler
它不应该简单地去掉负号还是绕过限制?
最佳答案
最常用于表示负数的方案称为 Two's Complement .在此方案中,-1
具有所有 1
位的位模式:1111 1111 1111 1111
。当被解释为一个无符号整数时,这就是你的 Actor 的意思,那就是 65535。
换句话说,它确实“简单地删除了负号”,只不过这样做的效果与您预期的不同。
关于c++ - turbo c 中的二进制表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20026442/