java二进制正数和负数取反

xiaoxiao2021-02-28  207

“反码”,“取反”,“按位取反(~)”,这3个概念是不一样的。 取反:0变1,1变0 反码:正数的反码是其本身,对于负数其符号位不变其它各位取反(0变1,1变0) 按位取反(~): 这将是下面要讨论的。 要弄懂这个运算符的计算方法,首先必须明白二进制数在内存中的存放形式,二进制数在内存中是以补码的形式存放的。 另外正数和负数的补码不一样,正数的补码、反码都是其本身,负数的反码是符号位不变,其余位取反,补码是反码加1,即: 正数11: 原码:00001011 补码:00001011 反码:00001011 负数-12 原码:11111100 反码:11110011 补码:11110100 对正数11按位取反 原码: 00001011 补码: 00001011 反码: 00001011 对补码取反: 11110100 减1得反码: 11110011 反码取反:     11111100 对负数-12按位取反 原码: 11111100 反码: 11110011 补码: 11110100 对补码取反: 00001011 对正数取反的口诀:补码取反减1取反 对负数取反的口诀:原码取反加1取反      规律:正数的取反等于正数加1取负        例如11的取反等于-12         负数的取反等于负数加1取正      例如-12的取反等于11
转载请注明原文地址: https://www.6miu.com/read-34989.html

最新回复(0)