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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 0751mumu 中级黑马   /  2016-2-5 11:10  /  2169 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

昨天刚学了原码补码反码。
     1. 码是由符号位和数值位组成的,第一位是符号位,正数是0,负数是1.
       问题:视频中局的例子是7.一个字节可以同时把符号位和数值位放下。如果这个数的本身数值位就有8位呢?那他的符号位怎么办?要在占用一个字节吗?(求解答)
      2.反码:正数的反码与原码相同,负数的反码符号位不变,数值位取反。
      3.补码:正数的补码与原码相同,负数的补码是在反码的末位加1。
      问题:经过运算得到的补码在计算机中对应的值是唯一的吗?如果是,能说明下理由吗?

6 个回复

正序浏览
0751mumu 来自手机 中级黑马 2016-2-5 17:05:31
7#
Marvin1993 发表于 2016-2-5 15:16
回答第一个问题:如果这个数本身数值位就有8位,并且它还是有符号位的,那么一个字节就没法表示这个数,如 ...

谢谢了,看了后面的教程,知道了
回复 使用道具 举报
回答第一个问题:如果这个数本身数值位就有8位,并且它还是有符号位的,那么一个字节就没法表示这个数,如果硬要表示,那么这个数会损失精度,这个数就不是这个数了。应该用更大的空间来存储这个数。
回复 使用道具 举报
bolt 发表于 2016-2-5 12:45
不会的。 正数不管什么码符号位恒为0 ,负数的补码是反码+1, 反码符号位是1。
视频说原码的符号 ...

懂了,听君一席话,胜思十个钟,谢谢
回复 使用道具 举报
0751mumu 发表于 2016-2-5 12:28
第一个,是转换成2进制后刚好8位,那符号位就需要多用一个字节了是吧。
第二个,视频上说得到原码的时候 ...

不会的。 正数不管什么码符号位恒为0 ,负数的补码是反码+1, 反码符号位是1。
视频说原码的符号位是进行位运算改变的吗,数本身已经发生变化了,何况是补码呢。
回复 使用道具 举报
bolt 发表于 2016-2-5 11:21
1 本身有8位是说 数值换成2进制有8位吗, 那可以用两个字节来存放的。比如short   int还可以存4个 ...

第一个,是转换成2进制后刚好8位,那符号位就需要多用一个字节了是吧。
第二个,视频上说得到原码的时候符号位是可能发生改变的。那会不会某个负数的补码跟另一个正数的原码相同?
回复 使用道具 举报

1 本身有8位是说 数值换成2进制有8位吗, 那可以用两个字节来存放的。比如short   int还可以存4个字节。
2是的 没啥理由,计算机就是这样存的啊。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马