负数补码

今天做了个很容易出错的题目
总结下 关于负数补码的知识
首先在计算机系统中数据都是以补码存储的
正数的补码
很简单就等于其二进制原码
负数的补码
1.先将负数的绝对值进行二进制转换
2.将最高位即符号位变为1(符号位为1表示负数 0为正数)
3.然后求反码(除符号位 其他取反就可以)
4.最后求补码 即在反码最低位加1
例如:-5的补码
1.首先绝对值二进制为0000 0101
2.符号位变1 即1000 0101
3.取反码 即1111 1010
4.补码为1111 1011

强调一点 -128的补码就是1000 0000这是规定好的 不用推理
在今天那道题目中是用的char型 而char型表示最小负数是-128
如果q求-129的补码
-129的补码需要9位来表示 多了一位 所以要舍弃最高位即舍弃符号位 区别在于 求反码是剩余的八位都要取反 因为符号位已经被舍弃了

你可能感兴趣的:(笔记)