为什么-1由8位转16位后会变成16个1而不是0000000011111111?

ScorpioZZR 2003-08-19 04:50:01
本人才疏学浅,不懂得为什么-1由8位变成16位后为什么不是0000000011111111而是1111111111111111了?
解释清的一次性给10分了。
...全文
159 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwenglish 2003-08-20
  • 打赏
  • 举报
回复
找一本计算机组成原理的教科书来看,上面详细的不得了.
W32API 2003-08-20
  • 打赏
  • 举报
回复
INTEL 采用符号位扩展
GhostAdz 2003-08-20
  • 打赏
  • 举报
回复
用我给你的公式算
似乎没有从8位到16位的公式的
当然-1有个规律
ff
ffff
都是负一
ScorpioZZR 2003-08-20
  • 打赏
  • 举报
回复
帮忙看看
http://expert.csdn.net/Expert/topic/2169/2169631.xml?temp=.5149347
kjhkuhiuyhk 2003-08-20
  • 打赏
  • 举报
回复
这是补码
0000000011111111 十进制为255 并不是负1
而1111111111111111值为-1
UNDERSTAND???
nicememory 2003-08-20
  • 打赏
  • 举报
回复
同意楼上的
ScorpioZZR 2003-08-19
  • 打赏
  • 举报
回复
=========
嗯,请问各位
是不是说只要从8位移到16位就是要全加1的??
GhostAdz 2003-08-19
  • 打赏
  • 举报
回复
先要知道一个负数的补码,在计算机里就认识这个
当然正数补码就是本身了
负数变补码 有个公式的

2的n次方减负数的绝对值
n表示你想把这个负数表示成几位的2进制

就说-1 表示成16位的话 它本身是负数当然要先变成补码如下:
2^16-|-1|=65536-1=65525=FFFFh=1111111111111111b
就这样
hwenglish 2003-08-19
  • 打赏
  • 举报
回复
你懂什么叫补码否!
如果不懂,就先了解什么叫补码先
zhyinfo 2003-08-19
  • 打赏
  • 举报
回复
应该是扩展吧。8位到16位的扩展有两种方式,一种是有符号扩展,低8位数的最高位是什么则
高8位均是什么 如 11111111——>11111111 11111111,cbw 和 cwd可实现上述扩展。

另一种是无符号数扩展,不管是什么8位数,高八位均位0
如 11111111-->00000000 11111111 直接把高位清零就可以了。
zhaobird 2003-08-19
  • 打赏
  • 举报
回复
是上面的大哥说的。
神农氏 2003-08-19
  • 打赏
  • 举报
回复
是为了保持有符号数的值不变。
16位的0000000011111111 的有符号数值是255,不是-1
而16位的1111111111111111 的有符号数值才是-1

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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