转折现象modular

转折现象modular
回家无聊看了会儿书,于是发现自己好大意,惊恐了一会儿,自己学习C语言的时候没注意,或者是忘了,细细说来:
例如:
对于int型数据范围是-2^32~~2^32-1;也就是-2147483648~~2147483647,那么设a=-2147483648,b=2147483647,则a-1,b+1的结果是多少?
我没在意,想想越界了,也就没多管,而事实上呈现一种循环结构
#include  < iostream >
using   namespace  std;

int  main()
{
    
int a=2147483647, b=-2147483648;
    
//a表示int型能表示的最大的整数,b表示能表示的最小的整数
    cout<<"转折现象modular"<<endl;
    cout
<<a+1<<endl;
    cout
<<b-1<<endl;
    
//既可以将int型数据看成一个循环的圆圈
    return 0;
}

/**/ /*******************

转折现象modular
-2147483648
2147483647
Press any key to continue

*****************
*/

其原因很好解释,用char型可以简单证明,要注意的是超过8位的进位会被舍去
在这里我们知道计算机内数据均用补码表示。
例如127是这样的0111 1111
127+1==》1000 0000即为-128


你可能感兴趣的:(转折现象modular)