C++int型是有符号类型,最高位是符号位。表示负数时最高位符号位是1,并且负数在计算机中是按照补码存储(正数的补码是其本身,负数的补码是其反吗加1,这是取反码不包括符号位)。
因此C++中最小负数二进制是:
1111 1111 1111 1111
按位取反再加1得到:
1000 0000 0000 0000
用十六进制表示为:0x80000000。
-1的二进制是:
1000 0000 0000 0001
按位取反加1:
1111 1111 1111 1111
用十六进制表示为: 0xffff ffff。
在windows64位系统中int型是4个字节,因此二进制是32位。
在VS中初始化整形数组默认值为0xcccc cccc,十进制是:-858993460。
下面是程序:
#include "stdafx.h"
#include <iostream>
//#include<string>
//#include <iomanip>
//#include <cmath>
using namespace std;
int main()
{
int x = 0x80000000;
int y = 0xffffffff;
cout << x << endl;
cout << y << endl;
cout << sizeof(x) << endl;
int a[3][3];
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
cout << a[i][j] << ' ';
}
cout << endl;
}
while (1){}
return 0;
输出结果为:
-2147483648
-1
4
-858993460 -858993460 -858993460
-858993460 -858993460 -858993460
-858993460 -858993460 -858993460