谁能告诉我-32768的补码具体是怎么算出来的?

[复制链接]
查看11 | 回复6 | 2021-5-30 15:39:26 | 显示全部楼层 |阅读模式
就按照补码的定义来做,很简单的。对于负数:用模,减去“-32768”的绝对值,即为补码。即:[-32768]补 = 65536-32768      = 32768 = 1000 0000 0000 0000(二进制)--------其它做法,都是错误的。因为,-32768 既没有原码,也没有反码。所以,用求反加一的做法,难以自圆其说。全部回答1楼厌今念往2021-02-14 16:2632767对应的二进制表示为0溢出就溢出呗,先正数补多一位,然后再按规则,然后再把补上的高一位去掉。 -32768对应正数32768(1000000000000000),这才16位 然后逐位取反0常数通常在主存中以补码形式存储的. -32768与+32768在主存中都是 0000000000000000 -32768的补码可以这样算=-32767-1 负数相减即为补码相加 如果以最高位为符号位,二进制原码最大为0
回复

使用道具 举报

千问 | 2021-5-30 15:39:26 | 显示全部楼层
谁能告诉我-32768的补码具体是怎么算出来的?首先你必须知道,正数的补码就是它本身,负数的补码=它的反码+1其次你还应该知道,计算机中一般将1表示负号,0表示正号先不管符号,将32768换算成二进制为1000 0000 0000 0000然后算出他的反码为0111 1111 1111 1111然后反码加1为1000 0000 0000 0000最后加上符号位为1 1000 0000 0000 0000
回复

使用道具 举报

千问 | 2021-5-30 15:39:26 | 显示全部楼层
溢出就溢出呗,先正数补多一位,然后再按规则,然后再把补上的高一位去掉。-32768对应正数32768(1000000000000000),这才16位然后逐位取反01111111111111111,加1得 1000000000000000,所以-32768对应的补码为1000000000000000
回复

使用道具 举报

千问 | 2021-5-30 15:39:26 | 显示全部楼层
就按照补码的定义来做,很简单的。对于负数:用模,减去“-32768”的绝对值,即为补码。即:[-32768]补 = 65536-32768      = 32768 = 1000 0000 0000 0000(二进制)--------其它做法,都是错误的。因为,-32768 既没有原码,也没有反码。所以,用求反加一的做法,难以自圆其说。32767对应的二进制表示为0111 1111 1111 1111则-32767补码表示为 1000 0000 0000 0001而-32768的补码可通过-32767-1得到 即1000 0000 0000 0000 即80 00H
回复

使用道具 举报

千问 | 2021-5-30 15:39:26 | 显示全部楼层
常数通常在主存中以补码形式存储的.-32768与+32768在主存中都是0000000000000000-32768的补码可以这样算=-32767-1负数相减即为补码相加1111111111111111加1即0000000000000000此时程序状态字(PSW)的溢出位为1
回复

使用道具 举报

千问 | 2021-5-30 15:39:26 | 显示全部楼层
谁能告诉我-32768的补码具体是怎么算出来的?溢出就溢出呗,先正数补多一位,然后再按规则,然后再把补上的高一位去掉。-32768对应正数32768(1000000000000000),这才16位然后逐位取反01111111111111111,加1得 1000000000000000,所以-32768对应的补码为1000000000000000就按照补码的定义来做,很简单的。对于负数:用模,减去“-32768”的绝对值,即为补码。即:[-32768]补 = 65536-32768= 32768 = 1000 0000 0000 0000(二进制)--------其它做法,都是错误的。因为,-32768 既没有原码,也没有反码。所以,用求反加一的做法,难以自圆其说。
回复

使用道具 举报

千问 | 2021-5-30 15:39:26 | 显示全部楼层
如果以最高位为符号位,二进制原码最大为0111111111111111=2的15次方减1=32767最小为1111111111111111=-2的15次方减1=-32767此时0有两种表现方法,即正0和负0:0000000000000000=1000000000000000=0。而int类型的范围是-32768~32768,人为规定1000000000000000这个补码编码为-32768。所以,补码系统中,范围是-32768~32767。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行