社区
C#
帖子详情
正数用补码怎么相加?
dazitou123
2012-01-10 12:32:54
如果是5-3,那么就是
0 0101
-1 0011
=[0 0101]补+[1 1101]补
=1(舍)00010
=0 0010
=2
但是如果两个正数相加的话,比如15+11,那么就是
0 1111
+ 0 1011
=[0 1111]补+[0 1011]补
=1 1010
=- 10
这里的问题出来了,之所以15+11=-10,是因为我把符号位也算进来了,因为5-3也是把符号位算进来的
...全文
800
11
打赏
收藏
正数用补码怎么相加?
如果是5-3,那么就是 0 0101 -1 0011 =[0 0101]补+[1 1101]补 =1(舍)00010 =0 0010 =2 但是如果两个正数相加的话,比如15+11,那么就是 0 1111 + 0 1011 =[0 1111]补+[0 1011]补 =1 1010 =- 10 这里的问题出来了,之所以15+11=-10,是因为我把符号位也算进来了,因为5-3也是把符号位算进来的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Saleayas
2012-01-10
打赏
举报
回复
15 + 11 = 1A, 最高位溢出,所以 15 + 11 = A(10);
EnForGrass
2012-01-10
打赏
举报
回复
0 0101
-1 0011
=[0 0101]补+[1 1101]补
=1(舍)00010
有时候自动丢掉最高位,结果是正确,也有可能是错误的。
dazitou123
2012-01-10
打赏
举报
回复
[Quote=引用 5 楼 sunzongbao2007 的回复:]
如果是5-3,那么就是
0 0101
-1 0011
=[0 0101]补+[1 1101]补
=1(舍)00010 <====这里你不是已经舍弃符号位了么?怎么还说没舍弃?
=2
但是如果两个正数相加的话,比如15+11,那么就是
0 1111
+ 0 1011
=[0 1111]补+[0 1011]补
=1 1010 <==……
[/Quote]
“ =1(舍)00010 <====这里你不是已经舍弃符号位了么?怎么还说没舍弃?”
这里是没舍弃符号位啊,你看100010,舍弃的是1,剩下00010,第一个0是符号位
EnForGrass
2012-01-10
打赏
举报
回复
[Quote=引用 8 楼 fly4free 的回复:]
说道“最高位” 得指定最高位是哪一位。
说白了,计算这些东西要看寄存器位宽。
[/Quote]
建议LZ去看看计算机组成原理,这本书有难度
fly4free
2012-01-10
打赏
举报
回复
说道“最高位” 得指定最高位是哪一位。
说白了,计算这些东西要看寄存器位宽。
铜臂阿铁木
2012-01-10
打赏
举报
回复
[Quote=引用 6 楼 chinajiyong 的回复:]
0 1111
+ 0 1011
=[0 1111]补+[0 1011]补
=1 1010
高位有进位,发生溢出。
可以用双符号位法来分析
一个符号位只能表示正、负两种情况,当产生溢出时,符号位的含义就会发生混乱。如果将符号位扩充为两位(Sf1、Sf2),其所能表示的信息量将随之扩大,既能判别是否溢出,又能指出结果的符号。
双符号位法也称为“变形补码”或“模4补码……
[/Quote]
+了个1
EnForGrass
2012-01-10
打赏
举报
回复
2
0 1111
+ 0 1011
=[0 1111]补+[0 1011]补
=1 1010
高位有进位,发生溢出。
可以用双符号位法来分析
一个符号位只能表示正、负两种情况,当产生溢出时,符号位的含义就会发生混乱。如果将符号位扩充为两位(Sf1、Sf2),其所能表示的信息量将随之扩大,既能判别是否溢出,又能指出结果的符号。
双符号位法也称为“变形补码”或“模4补码”
两数变形补码之和等于两数和的变形补码,要求:
• 两个符号位都看做数码一样参加运算;
• 两数进行以4为模的加法,即最高符号位上产生的进位要丢掉。
不管溢出与否,最高符号位永远表示结果的正确符号
Sf1Sf2=00 结果为正数,无溢出
01 结果正溢
10 结果负溢
11 结果为负数,无溢出
00 1111
+ 00 1011
=[00 1111]补+[00 1011]补
=01 1010
01 结果正溢
铜臂阿铁木
2012-01-10
打赏
举报
回复
如果是5-3,那么就是
0 0101
-1 0011
=[0 0101]补+[1 1101]补
=1(舍)00010 <====这里你不是已经舍弃符号位了么?怎么还说没舍弃?
=2
但是如果两个正数相加的话,比如15+11,那么就是
0 1111
+ 0 1011
=[0 1111]补+[0 1011]补
=1 1010 <========= 上面5与-3的加法你舍弃了符号位,为什么到了15+11又不舍弃了呢?
=- 10
铜臂阿铁木
2012-01-10
打赏
举报
回复
[Quote=引用楼主 dazitou123 的回复:]
因为5-3也是把符号位算进来的
[/Quote]
你看看结果你把符号位算进来了么?
补码运算中间取补码的时候,是二进制补码转换,算符号位。
但是补码运算结果是舍弃符号位的。
铜臂阿铁木
2012-01-10
打赏
举报
回复
补码运算,结果符号位要舍弃,这个你不知道么?
不知道补码运算,这补来补去补啥呢
dazitou123
2012-01-10
打赏
举报
回复
[Quote=引用 1 楼 saleayas 的回复:]
15 + 11 = 1A, 最高位溢出,所以 15 + 11 = A(10);
[/Quote]
请用二进制。。谢谢
为什么需要反码和
补码
?.docx
为什么需要反码和
补码
反码 o在计算机的时候,只有加法器没有减法器,为了将减法转换为加法,设计反码; o但是反码有缺陷,正负
相加
0 的表示不唯一;
补码
o为了解决反码正负
相加
不唯一的情况,使用高位溢出解决;
计算机基础知识:原码反码
补码
练习(含答案)
c++ 计算机底层 原码反码
补码
的练习题,包括答案
Java
补码
详细内容解析
补码
,在Java(以及大多数现代计算机系统中)中,整数通常使用
补码
(Two's Complement)形式来表示。
补码
表示法不仅简化了加减运算,还使得负数的存储和
正数
一样简单高效
补码
工具.rar
用于汇编
补码
研究,方便写编译器,编译平台
原码、反码、
补码
的相关原理
原码、反码、
补码
的相关原理 原码、反码、
补码
的相关原理
C#
111,130
社区成员
642,541
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章