讨论 -1mod256=255

在计算机中所有内容都是以二进制的形式存储的,并且是以补码的形式存储。我们知道 - 1 本身 是个负数,它的原码是1000 0001,对应的反码(符号位不变,其它位取反)是1111 1110,对 应的补码(反码的基础上+1)是1111 1111,计算机中存储了-1的补码,也就是1111 1111,这时候把它赋值给了 uinsigned char无符号的,那么1111 1111就会被直接当做无符号数来转 换,1111 1111按照无符号读取就是十进制的255。然后255对256求模,就会得到255。
更多信息见: https://blog.csdn.net/denghecsdn/article/details/76568645

你可能感兴趣的:(C++)