废话不多说直接进入主题:无符号的int和有符号的int的理解和代码演示,首先要知道计算机存储和运算数据都是按照补码方式存储的,不过int是负数的时候呢?
这就涉及到了数据的 原码 反码 补码,正数的原码和补码是一样的,反码的话就是~(取反)
负数的话 原码 的最高位是用来表示符号位的 0是整数 1是负数,反码~(除了符号位)、
补码就是在反码的基础上+1
下面用代码举例子:
上面b=-20 在计算机存储是补码的形式 -20的原码是 1000...10100,先求反码~得1111...01011
接着反码+1就是补码:1111...0101100在计算机中存储
在计算int和uint 时会把int当做uint参加运算 也就是全部bit都是数据bit,所以这里的-20如果和6对比的话是会输出 “>6”的。6的原码和补码相同都是0.....110 而此时的-20是1111...0101100 显然都当做是uint 来对比的话 -20一定是大于6的 32b