A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangpeng1 中级黑马   /  2016-2-27 13:05  /  1080 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

c语言下负整数在进行二进制运算时为何还要转换成补码?

2 个回复

倒序浏览

+1在计算机存储:
原码:1000 0000 0000 0000 0000 0000 0000 0001(最高位为符号位)
原码==反码==补码

-1在计算机存储:
原码:1000 0000 0000 0000 0000 0000 0000 0001 (最高位为符号位)
反码:1111 1111 1111 1111 1111 1111 1111 1110
负数的补码==反码+1
补码:1111 1111 1111 1111 1111 1111 1111 1111      -1

只有补码加补码  -1+1 ==0 ,否则用原码或者反码求和得出来的值不为0
回复 使用道具 举报
二进制的最高位是符号位,如果是负数肯定要按照楼上写的这么做。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马