C语言底层机械层次区分带符号整数和不带符号整数吗,给出理由
带不带符合就看最高位,最高位就是符号位,1就是负数,0就是整数。
底层结构是指什么,int类型在内存中一般按照4字节(32位)进行存储,在计算机中所有的数据都是按照二进制进行储存的。
在字长为1个字节的机器上表示 int a = 1; 和 unsigned int b = 1; 都是 0000 0000 0000 0000 0000 0000 0000 0001,没有任何区别。
#include <iostream>
using namespace std;
int main()
{
int a = -1;
cout << a << " " << (unsigned int)a << endl;
}
上面的C++代码运行结果为:
需要注意的是,C++中使用补码表示负数,因此-1对应的二进制为 1111 1111 1111 1111 1111 1111 1111 1111 ,当强制转换为无符号整数时,作为原码计算得到十进制数字:4294967295