补码相加 符号位变化
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/31 14:38:15
数据在内存中以补码形式存储,运算也以补码形式运算,运算结果也是补码.最高位是符号位,正数时是0,负数时是1.以int类型2字节,16位二进制来算.9(正数),补码=原码,即00000000000010
248163264128……按翻倍下去每位加起来相加数字写1没用写0然后从数字最大开始抄1或0你歌笨蛋这都不懂哦!哎!
关于第一个问题,我可以告诉你这个程序溢出了因为你限制了整数位只有1位,试想,如果x=00.11001,你还会认为,得出一个负数么第二个问题不就是二者之和么,01.10010再问:谢谢可是请问01.10
原码和反码,是用来求补码的,不是用来计算的.楼主把-3-5,-3+5它们都写成补码,然后按照二进制计算就行了.
无论是有符号数,还是无符号数;无论是符号位为0,还是1;都是用二进制的加法法则来相加.符号位也参加运算.原因:CPU里面,只有一个加法器,只有一个计算方法,就是逢2进1.
不需要再问:可用二进制补码计算-85+60时,符号位不加减没法做啊?
原码:10000000这是-0的原码反码:11111111这是-0的反码补码:10000000这是-128的补码
拿四位的二进制来说,表示范围应该是-16~15吧?--------------------不是,只有-8~+7.
注意补码的求法,最高位始终是符号位正数的最高位是符号位0,负数的最高位是符号位1.对于负数:补码==反码+1.(可以理解成把相对应的相同绝对值的正数整体取反加1)例如:-1的反码是11111110-1
正整数的补码与原码相同,求负整数的补码,符号位不变,数值位各位取反,最后整个数加1.
那就相当于一个正有符号数,按正有符号数计算即可再问:什么叫一个正有符号的数?到底符号位是哪个?再答:第一个数为符号位如10000100符号位为1
本人认为这个问题是当初的多此一举把人们绕糊涂了.设计补码的初衷就是要表示数据的各位都参与运算,在给定的字长下配合一定的溢出规则来得到正确的结果.你就不要认为有补码存在,比如一字节的十进制26编码是00
理论上是不变的,又可能是印刷错误,但还要依具体情况来说
既然是最高位,进位当然要舍去了,比如说两个补码的最高位都为1,1+1=10,结果只能取零,而1就被舍去了啦.
(2)补=00000010,(1)补=00000001,(-1)补=10000001.不同机位你指什么.我将下这三个数不同进制的操作.字数有限,二进制,00000010+00000001=000000
1000+1001=0001再问:为什么呀?两个负的相加怎么会是正数?再答:可能的,这就是溢出。补码运算,和普通二进制数的运算,完全相同。1000+1001=(1)0001,进位丢弃了。再问:所有溢出
范围是-128至127.根据补码的几条规定即可推出上述结论:1若二进制每位全为0,则表示数02若最高位(即符号位)为0,表示正数3若最高位为1,表示是负数,而该负数的绝对值是多少呢?将每个二进制位(包
按楼主做法,约定字长5位x=-7d=-00111b[x]原=10111b[x]反=11000b[x]补=11001by=-4d=-00100b[y]原=10100b[y]反=11011b[y]补=11
这就是一般的二进制相加原则,没什么特殊的.最后只要判断是否溢出就可以了.再问:可是为什么啊,书上说根据那幅圆形的钟表图道理就很明显了,我是我就是理解不了,求大虾指点。再答:你不用管它,就当是二进制相加