问下,四位原码1110拓展至八位11111110,正确吗?补码也能拓展吗?为什么拓展求补与求补再拓展结果不一样

作者&投稿:漕姚 (若有异议请与网页底部的电邮联系)
求物理地址的时候,偏移地址给的是补码吗?要把它求补一下?~

这个数值比较特殊,80H转换为二进制为1000 0000H.因为符号位为一,明显真值是负的。再对80H求补(连同符号位),结果80H真值为—80H.希望对楼主有用

已知X=-1110,
[X]原=1,1110(为了 书写方便及区别整数和小数,约定整数的符号位于数值位之间用逗号隔开,小数的符号位与数值为之间用小数点隔开,下述同上)
[X]反=(2^(4+1)-1)+(-1110)
=32-1110
=11111-1110
=1,0001
[X]补=2^(4+1)+(-1110)
=32-1110
=100000-1110
=1,0010
//----------------------------------------------------------------------
其实不用这么麻烦的
原码:一个数字直接转换成二进制后,这个二进制的数字就是原码
正数的原码,反码,补码都是一样的
负数的反码:原码的符号位不变,其他位取反(1变0,0变1)
负数的补码:反码+1
实例:
负数十进制数:-14
原码:1,1110(符号位1表示负,符号位0表示正)
反码:1,0001
补码:1,0010

不能说正确与否,没有所谓的四位原码的,一般计算机中有字节、字、双字、四字,没有四位的。

扩展不能叫拓展,如果把一个字节扩展为一个字,其实应该说是带符号扩展和不带符号扩展两种方式。

所谓的不带符号扩展,就是将要扩展的字节,字,或是双字看作一个无符号数。进行扩展时只须前边补0即可,没有任何的其他方法,一般是从字节扩展为字,从字扩展为双字,从双字扩展为四字,从四位原码扩展,这是什么意思?难道是非压缩BCD码?

所谓的带符号扩展,就是将要扩展的字节,字或双字看作一个带符号数进行扩展的,其扩展方法是如果符号位(最高位)是0,前边全补0,如果是1,前边全补1。也就是说不管怎么扩展,前边全补符号位。

这里要说明一下扩展的意思,扩展的意义在于原来表示的数据范围小,现在需要一个大的表示范围,所以才使用扩展。扩展的根据是与原来小范围的数字表示相同,比如十进制下的5作为带符号数,字节表示是(0000 0101),现在可能要加一个数字超出-128~127之间,所以要表示为更大的范围,那么就需要将数字5进行带符号扩展,也就是用字表示5,(0000 0000 0000 0101),换句话来说,字表示的5就是字节表示的5的带符号扩展。

至于补码原码的概念其实与扩展是完全两码事的。不管你用什么样的手段,扩展后的与扩展前的表示必须是同一数字。扩展只是增加一个表示范围而已,与其本身没有关系的。

扩展是扩展,求补是求补两者没有联系。再者扩展还分为带符号扩展与不带符号扩展,比如1111 1110如果是一个带符号数表示的就是-2,带符号扩展后就是(1111 1111 1111 1110)仍然表示是带符号的数字是-2;如果1111 1110是无符号数表示的是254,不带符号扩展后就是(0000 0000 1111 1110)仍然表示不带符号的254!这就是扩展的意义。

求补是一个运算,扩展也是一个运算,两者都表示固定的方式。

扩展后求补与求补后扩展的结果肯定不一定完全相同的。因为这不是扩展的求法,你理解出现了极大的错误的!

好像不正确,你的原码1110是二进制还是十进制?

不对


一个C语言的问题...
而负数的原码转换成补码的方法是:符号位不变,数值位取反后再加1,所以 -4的补码是:1,111 1111 1111 1100,即实际上在计算机内存上存放的是这些2进制数了 dec=-4,这个是没问题的吧。oct=177 774,每3位2进制构成一个8进制数,你自己可以算一下。hex=fffc,每4位2进制构成一个16进制...

一文搞懂原码、反码、补码
需要声明的是,本文涉及到的数字及运算均基于 8位bit 下的值。最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制表示。如:127的原码为0111 1111 -127的原码为1111 1111 正数的反码与原码一致;负数的反码是对原码按位取反,只是 最高位(符号位)不变 。如:127的反码为...

十进制负数转换成二进制、八进制、十六进制
如果要在计算机中存储这些数,就要用原码或补码的形式,这时负号“-”用“1”表示。—111的原码表示为: 11101111,—111的补码表示为:10010001,这是8位二进制数,如果用十六位二进制数表示补码,是:1111111110010001,再转换成八进制,就是:177621,最前面那个“1”补两个“0”就是“001”,是八...

关于原码、反码、补码,求教大神。。
正数的补码为其原码本身,负数的补码为其绝对值的原码取反再加1。十进制数7转换为二进制表示,原码为0111,反码1000,补码仍然原码本身为0111;十进制数-7转换为二进制表示,为其绝对值的原码取反再加1,也就是0111取反再加1,即1001。

补码问题
如果我们换种表示法:用5位,最高位是符号位,0表示正数,1表示负数。剩下的四位还是依旧对应权值8421,那么-3的原码为10011——>反码11100——>补码11101,-6原码——>10110——>反码11001——>补码11010 1|1101+1|1010=11|0111(注意这里的符号位产生了进位,也就为最高位的两个1)再将11|...

计算机编码:原码、反码、补码
举例来说,四位二进制的减法,0110-0010,通过补码转换后,就变成了0110+1110,结果是10100,这就是补码运算的直观展示。补码的特点在于:它将符号位和数值位结合,0表示正,1表示负,这让0的表示变得独一无二。更重要的是,负数的补码范围比原码更宽,这使得计算更为灵活。总结来说,补码就像计算机...

-60原码、反码、补码是? 60二进制111100对吗?
-60 原码:1011 1100 反码:1100 0011 补码:1100 0100 60:原码:0011 1100 补码与原码相同

关于原码、反码、补码,求教大神。。
在计算机系统中,数值,一律采用补码表示和存储。这就是说,计算机中,并没有原码和反码。原码和反码,只是在求补码时,表现一下存在感而已。但是,求补码,还有更正规的方法,完全可以不经过原码反码,就求出补码。由补码,再求其代表的数值,也可以不用原码反码。那么,就可以说,原码和反码,都没有...

请问怎么看一个数字为几进位制数? 比如117 为什么是十进位制数呢?_百...
例如:假设机器数为8位,则其最高位是符号位,那么在整数的表示情况下,对于00101110和10010011,其真值分别为十进位制数+46和-19。 机器数常采用原码和补码的形式作为其编码方式。 (1)原码 整数X的原码是指:其符号位的0或1表示X的正或负,其数值部分就是X的绝对值的二进位制表示。通常用[X]原表示X的原码。

十进制负数转换成二进制、八进制、十六进制 希望能在20...
如果要在计算机中存储这些数,就要用原码或补码的形式,这时负号“-”用“1”表示。—111的原码表示为: 11101111,—111的补码表示为:10010001,这是8位二进制数,如果用十六位二进制数表示补码,是:1111111110010001,再转换成八进制,就是:177621,最前面那个“1”补两个“0”就是“001”,是八...

阜城县13231429622: 问下,四位原码1110拓展至八位11111110,补码也能拓展吗?为什么拓展求补与求补再拓展结果不一样 -
磨古永适:[答案] 不能说正确与否,没有所谓的四位原码的,一般计算机中有字节、字、双字、四字,没有四位的. 扩展不能叫拓展,如果把一个字节扩展为一个字,其实应该说是带符号扩展和不带符号扩展两种方式. 所谓的不带符号扩展,就是将要扩展的字节,字,...

阜城县13231429622: X的补码为1000,则X=? -
磨古永适: x-y=x+(-y),因此要求出-y的补码,因为y补码符号位是0,说明它是正数,即y原=y补=0010,所以(-y)原=1010,所以(-y)补=1110,所以(x-y)补=(x+(-y))补=(x)补+(-y)补=1001.你可以化为十进制验证,x=-5,y=2,x-y=-7,-7的原码是1111,补码就是1001

阜城县13231429622: 这串二进制代码0011001011101001翻译后是啥意思? -
磨古永适: 这是计算机二进制数,转换方法有“前三位,前四位,前八位”如果这个按前四位来转换的话应该是:0011=3 0010=2 1110=14 1001=9 也就是3.2.14.9;就是1、2、4、8这样乘2

阜城县13231429622: 写出下列数据的原码和补码(取字长为8位二进制) (1),30 (2), - 30 (3), - 95 (4),102 -
磨古永适: (1)30 原码:0001 1110,补码:0001 1110 (2)-30 原码:1001 1110,补码:11100010 (3)-95 原码:1101 1111,补码:1010 0001 (4)102原码:0110 0110,补码:0110 0110

阜城县13231429622: 十六进制的转换 -
磨古永适: 二进制转换十进制 二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…… 所以,设有一个二进制数:101100100,转换为10进制为:356 用横式计算 0*20+0*21+1*22+0*23+0*24+1*25+1*26+0*27+1*28=356 0乘以多少都是0,所以...

阜城县13231429622: 问问电脑编程二进制转八进制如何转? -
磨古永适: 最简单的就下面这种: 从个位开始数三位,即化为111 101 110(若最前面不足三位,则最高位补0凑成3位),然后分别把每三位的数化为十进制,即111=2^2+2^1+2^0=7 ,101=2^2+2^0=5,110=2^2+2^1=6,所以111101110=(756)八 同样化为16...

阜城县13231429622: 1 如何将十六进制数 - 6f表达成八位空间上的补码?2 用补码原理计算3D - 6F -
磨古永适:[答案] 先把十六进制数转成二进制数,每一位十六进制对应四位二进制6=0110 F=11116FH=0110 1111B在8位二进制数中,最高位为符号位,0表示正,1表示负.所以:-6FH=1110 1111B 即:-6F的原码为:1110 1111反码:符号位不变,其余...

阜城县13231429622: 如何把10进制数转分别换成8进制和16进制数 -
磨古永适: 一、 常用数制及其相互转换 在我们的日常生活中计数采用了多种记数制,比如:十进制,六十进制(六十秒为一分,六十分为一小时,即基数为60,运算规则是逢六十进一),…….在计算机中常用到十进制数、二进制数、八进制数、十六进...

阜城县13231429622: 二进制数01111011转换为8进制数为 ,转换为十六进制数为 -
磨古永适: 7B

阜城县13231429622: 请将 - 617用八进制和十六进制数(补码)表示? -
磨古永适: -617,,先取617:,转为bin:0000001001101001,除符号位,按位取反,即为反码:0111110110010110,再加1,并且符号位置1,即为补码:1111110110010111 转为hex就是0fd97h,转为八进制就是(176627)八进制 617大于255,转为16位更方便些

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网