好记性不如烂笔头,闲话少说
首先明白2个定义:
原码:就是人类能够计算 例如: 十进制数 2 用户8位2进制机器数表示 0000 0010
反码:就是每位取反 0变1 ,1变0 ;
补码:就是反码+1 ,补码的设计是为了解决 正0 与 负0问题
计算机用补码表示主要是为了解决减肥的问题。
阐明几个问题: 正数的补码还是它本身 2 的补码还是 0000 0010
负数的补码 就是 机器码的反码+1 例如:-2 的机器码 1000 0010 取反: 1111 1101 补码:1111 1110
然后 再理解 java 中的 左移 右移
首先二进制码的 最高位是符号位 一直不参与运算的,
正数的左移溢出位舍弃 右侧填0
正数的右移高位不够要填 0
负数左移 溢出位舍弃 右侧填0
负数右移高位不够要填1 ,
为什用 补码参考网站:
http://www.cnblogs.com/zhangziqiu/archive/2011/03/30/ComputerCode.html