如果只要结果 公式如下 对 a 按位取反,则得到的结果为 -(a+1)
公式适用于正负数
例如 -(-55+1) = 54;
取反,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。
故而8位二进制只能计算-128到127之间的数字
二进制操作
负数 例如 -55 === -1 1 0 1 1 1 1.补位 1 0 1 1 0 1 1 1 (补到八位 第一位1代表负数 0代表正数 位数不足补0) 2.反码 1 1 0 0 1 0 0 0 (第一位代表符号不变 其余值全部取反) 3.补码 1 1 0 0 1 0 0 1 (补码=反码+1 逢2进1) 4.取反 0 0 1 1 0 1 1 0 (全部位取反) 5.结果 1 1 0 1 1 0 (取原来位数 即6位 54 原数值第一位1代表负数 0代表正数 其余舍弃) 正数 例如 54 === 1 1 0 1 1 0 1.补位 0 0 1 1 0 1 1 0 (补到八位 第一位1代表负数 0代表正数 位数不足补0) 2.取反 1 1 0 0 1 0 0 1 (每一位取反 ) 3.再求一次补码 而 补码 = 反码+1 4.反码 1 0 1 1 0 1 1 0 (第一位代表符号不变 其余值全部取反) 5.补码 1 0 1 1 0 1 1 1 (反码+1 逢2进1) 6.结果 -1 1 0 1 1 1 (取原来位数 即6位 -55 原数值第一位1代表负数 0代表正数 其余舍弃)
上述二进制操作为个人理解 如果哪里不对还请赐教 感谢!