原码 补码

codejian 2011-09-06 08:43:43
我理解能力差,反复看书而不得解,故,求各位老师,谢先!
请用白话文说明下
1: 原码,补码到底什么意思?

2: 如何判断一个 XXXXXXXXXXXXXXXX ,符号位的 1 是 用来表示负数的还是 值的一个部分。 我就不知道,那个1 什么时候表示符号位,什么时候表示的是值的一部分。

能详细解答我的两个问题,我想我也就明白了。。
...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
尘缘udbwcso 2011-09-06
  • 打赏
  • 举报
回复
看不懂就先放一放,过一段时间再看就豁然开朗了
lyc417356935 2011-09-06
  • 打赏
  • 举报
回复
数据有原码、反码、补码3种表示形式:

1.原码   
原码是指将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值的数字表示方式。

  例如:数字6在计算机中原码表示为:0000 0110

  其中,第一个数字0是符号位,0表示正数,0000110是数字6的二进制数据表示。

  数字-6在计算机中原码表示为:1000 0110

  以上是在8位计算机中的原码表示,如果在32位或16位计算机中,表示方法也是一样的,只是多了几个数字0而已。

  例如,
在16位计算机中数字6的原码表示为:0000 0000 0000 0110
在32位计算机中数字6的原码表示为:0000 0000 0000 0000 0000 0000 0000 0110  
  
2.反码
反码表示规则为:
如果是正数,则表示方法和原码一样;
如果是负数,则保留符号位1,然后将这个数字的原码按照每位取反。

  例如,
数字6在8位计算机中的反码就是它的原码:0000 0110
   数字-6在8位计算机中的反码为:1111 1001

3.补码
补码表示规则为:
如果是整数,则表示方法和原码一样;
如果是负数,则将数字的反码加上1。

  例如:
数字6在8位计算机中的补码就是它的原码:0000 0110
反码:0000 0110
补码:0000 0110
   数字-6在8位计算机中的原码:1000 0110
反码:1111 1001
补码:1111 1010
jixingzhong 2011-09-06
  • 打赏
  • 举报
回复
两个概念,两种编码。

游戏设计师 2011-09-06
  • 打赏
  • 举报
回复
- -~原码就是原码,最高位为符号位 0为正 1为负,剩下的按二进制计算 正0为 000000.。。。负0为 1000.。。的样子

补码就是正数和原码一样,负数等于其原码的反码末尾再加上1,所以正0和负0都是000000。。。。。的样子

第二个要看是什么码了~

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧