计算机中char int long等整型和字符型数据都是按照补码方式存储的,数据的补码严格按照原码—>反码—>补码的方式转化。整数的反码补码都与原码一样,负数的反码,是原码保持符号位不变,其他取反,反码加一为补码,溢出的数据则需要去掉最左边,最终补码的字节长度就是数据类型的长度。
11000 0000(源码) — 10111 1111(取反) — 11000 0000(加一) — 80(1000 0000)(去左端溢出数据,补码)
-127;// 1111 1111(源码) — 1000 0000(取反) — 1000 0001(加一) — 81(补码)
-0;// 1000 0000 — 1111 1111 — 10000 0000 — 00
128;// 01000 0000 — 01000 0000 — 80(1000 0000)(去溢出数据,补码)
int和unsigned int有着一样的效果