2个字节能表示的整数范围

Death__knight__ 2009-03-04 06:55:14
2个字节能表示的范围是-128~127,负数在内存中是以补码表示的,-128在内存中的表示是1000 0000,-128的补码应该不是1 1000 0000?请高手指点下
...全文
2110 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
traceless 2009-03-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 Death__knight__ 的回复:]
-128没源码和反码?反码和补码都是由原码求出来的
[/Quote]

很肯定的说:没有

你看了3L说的了没有?

反码和补码都是由原码求出来的
>> 这个是求的一种方法。方法不能取代定义,定义就不同,很稳定


呵呵,lz可以找本微机原理或者计算机组成来看看

Death__knight__ 2009-03-04
  • 打赏
  • 举报
回复
不好意思,说错了,是1个字节
Death__knight__ 2009-03-04
  • 打赏
  • 举报
回复
-128没源码和反码?反码和补码都是由原码求出来的
Death__knight__ 2009-03-04
  • 打赏
  • 举报
回复
-128没源码和反码?反码和补码都是由原码求出来的
疯哥哥 2009-03-04
  • 打赏
  • 举报
回复
2字节?应该是1个字节吧...
像10000000规定是最高位既做符号位,又做数字用...所以是-128.
要不这个10000000不能表示数.就浪费了..
Death__knight__ 2009-03-04
  • 打赏
  • 举报
回复
-128没源码和反码?反码和补码都是由原码求出来的
traceless 2009-03-04
  • 打赏
  • 举报
回复
2个字节能表示的范围是-128~127 ??

======================================
2个字节对于补码来说可以:-128 -- 127

有符号的char型不就是吗 ^_^

traceless 2009-03-04
  • 打赏
  • 举报
回复
求补码的一种方法是:在反码的基础上加1
这个是方法,不是定义,-128用这个方法不成立
所以得用定义来:
对于负数的补码定义是:2^n - |x| (n是字长)
比如:x = -128,那么对于2个字长来说,就是
2^8 - |-128| = 256 - 128 = 128 = 1000_0000
yangch_nhcmo 2009-03-04
  • 打赏
  • 举报
回复
2个字节能表示的范围是-128~127 ??
关于原码,反码,补码楼主找本计算机基础书看下就明白了
traceless 2009-03-04
  • 打赏
  • 举报
回复
LZ,不好意思,上面的这部份说错了
-128:
原码:1000_0000
反码:1111_1111
补码:在反码基础上加1,本来应该是:1_1000_000
但对于2个字节来说确实是:1000_000(2个字节的限制)


这部分错了
对于8位2进制表示的数
原码表示的范围是:-127 -- +127
反码表示的范围是:-127 -- +127
补码是:-128 -- +127

哈哈,所以我错了,就是说-128根本没有原码和反码
Death__knight__ 2009-03-04
  • 打赏
  • 举报
回复
不太明白,-128源码应该是1 1000 0000,反码应该是1 0111 1111,加1是1 1000 0000,两个字节没法表示
traceless 2009-03-04
  • 打赏
  • 举报
回复
-128:
原码:1000_0000
反码:1111_1111
补码:在反码基础上加1,本来应该是:1_1000_000
但对于2个字节来说确实是:1000_000(2个字节的限制)
但是这样并没有违反定义
因为其中对于机器来说这个是不透明的,机器还要考虑符号位和数值最高位

1111_1111 + 1 = 1000_0000:没有溢出,正确
这是因为当符号位和数值部分最高位同时有进位或同时没有进位时,结果没有溢出

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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