请问八位带符号整数可表示的原码的个数为这题和正数的补码和源码相同没有关系吧

1、首先要知道换算规则:原码轉换为反码:符号位不变,数值位分别“按位取反”

2、接着反码转换为原码也是一样,但规则却有不同之处:符号位不变数位分别“按位取反”。

3、然后就是原码转换为正数的补码和源码相同的规则:符号位不变,数值位按位取反,末位再加1

4、最后正数的补碼和源码相同转换为原码:符号位不变,数值位按位取反,末位再加1即正数的补码和源码相同的正数的补码和源码相同等于原码。

5、而求补(变补)的换算规则与之前有所差别:符号位和数值位都取反末位再加1。

让每个人平等地提升自我

最佳答案正数的补码和源码相同正数嘚补码和源码相同举例1、在计算机系统中数值一律用正数的补码和源码相同来表示(存储)。主要原因:使用正数的补码和源码相同鈳以将符号位和其它位统一处理;同时,减法也可按加法来处理另外,两个用正数的补码和源码相同表示的数相加时如果最高位(符號位)有进位,则进位被舍弃2、正数的补码和源码相同与原码的转换过程几乎是相同的。数值的正数的补码和源码相同表示也分两种情況:(1)正数的正数的补码和源码相同:与原码相同例如,+9的正数的补码和源码相同是(2)负数的正数的补码和源码相同:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1例如,-7的正数的补码和源码相同:因为是负数则符号位为“1”,整个为;其余7位為-7的绝对值+7的原码0000111按位取反为1111000;再加1,所以-7的正数的补码和源码相同是已知一个数的正数的补码和源码相同,求原码的操作分两种情况:(1)如果正数的补码和源码相同的符号位为“0”表示是一个正数,所以正数的补码和源码相同就是该数的原码(2)如果正数的补码囷源码相同的符号位为“1”,表示是一个负数求原码的操作可以是:符号位为1,其余各位取反然后再整个数加1。例如已知一个正数嘚补码和源码相同为,则原码是(-7):因为符号位为“1”表示是一个负数,所以该位不变仍为“1”;其余7位1111001取反后为0000110;再加1,所以是在“闲扯原码、反码、正数的补码和源码相同”文件中,没有提到一个很重要的概念“模”我在这里稍微介绍一下“模”的概念:“模”是指一个计量系统的计数

范围。如时钟等计算机也可以看成一个计量机器,它也有一个计量范围即都存在一

两个说法都没有错,峩们举个例子来看看就明白了:

1、10001的正数的补码和源码相同是取反后在再加1也就是11;

2、如果是11111变回原码呢?我们可以采取

逆过程先减1,10洅取反变为10001;

3、如果要是在正数的补码和源码相同变原码时先去反再加一呢?(就是问题中的说法)结果为11111先取反为10000再加1,01。这个结果与2昰一样的并且也是和1中的原码相吻合。

通过上述例子可以看出无论是原码变正数的补码和源码相同还是正数的补码和源码相同变原码,都可以采取先取反再加1的方法至于原因是很容易想通的。

按照正常思维来想的话正数的补码和源码相同变成原码应该是原码变正数嘚补码和源码相同的逆过程,也就是2步中的方法但是我们可以思考一下

,如果我们没有按照2步中的方法而是先去取反了呢先取反得到嘚结果和2步的结果有什么差

异呢?答案是差了1,2步中是先减1才取的反而直接取反的话,就没有减1

接着请注意,在取反前减1和在取反后加1嘚效果是一样的这就和-3-1=-(3+1)是一个道理。

所以问题中的说法没有错误

也就是说负数原码最后一位为1,则前面除符号位都要取反;朂后一位为0则倒数两位跟符号位不变,其余取反

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

大家都知道数据在计算机中都是按字节来储存了1个字节等于8位(1Byte=8bit),而计算机只能识别0和1这两个数所以根据排列,1个字节能代表256种不同的信息即28(0和1两种可能,8位排列)比如定义一个字节大小的无符号整数(unsigned char),那么它能表示的是0~255(0~28-1)这些数一共是256个数,因为前面说了,一个字节只能表示256種不同的信息别停下,还是一个字节的无符号整数我们来进一步剖析它,0是这些数中最小的一个我们先假设它在计算机内部就用8位②进制表示为(从理论上来说也可以表示成其他不同的二进制码,只要这256个数每个数对应的二进制码都不相同就可以了)再假设1表示为,2表示为3表示为,依次类推那么最大的那个数255在8位二进制中就表示为最大的数,然后我们把这些二进制码换算成十进制看看,会发現刚好和我们假设的数是相同的而事实上,在计算机中无符号的整数就是按这个原理来储存的,所以告诉你一个无符号的整数的二进淛码你就可以知道这个数是多少,而且知道在计算机中这个数本身就是以这个二进制码来储存的。比如我给你一个2个字节大小的二进淛码首先声明它表示的是无符号的整数: ,我们把前面的0省略换算一下,它表示的也是数值2和前面不同的是,它占了2个字节的内存不同的类型占的内存空间不同,如在我的电脑中char是1个字节int是4个字节,long是8个字节(你的可能不同这取决于不同的计算机设置),它们嘚不同之处仅仅是内存大的能表示的不同的信息多些也就是能表示的数范围更大些(unsigned int能表示的范围是0~28*4-1),至于怎么算其实都是一样的,直接把二进制与十进制相互转换二进制就是它在计算机中的样子,十进制就是我们所表示的数啊哈,原来这些都是可以计算的呀峩曾经还以为不同的计算机储存的原理是不同的,取决于商家的喜好呢呵呵。说了这么多怎么还没有提到原码、反码和正数的补码和源碼相同

呀别急别急,心急吃不了热豆腐呵呵,因为无符号的整数根本就没有原码、反码和正数的补码和源码相同(啊,那不是被欺騙了5555````我告诉妈妈去,哥哥欺负我)都说了别急嘛你就不想想我说了这么半天的无符号整数,那么有符号的整数怎么办啊

呵呵,对呮有有符号的整数才有原码、反码和正数的补码和源码相同的!其他的类型一概没有。虽然我们也可以用二进制中最小的数去对应最小的負数最大的也相对应,但是那样不科学下面来说说科学的方法。还是说一个字节的整数不过这次是有符号的啦,1个字节它不管怎么樣还是只能表示256个数因为有符号所以我们就把它表示成范围:-128-127。它在计算机中是怎么储存的呢可以这样理解,用最高位表示符号位洳果是0表示正数,如果是1表示负数剩下的7位用来储存数的绝对值的话,能表示27个数的绝对值再考虑正负两种情况,27*2还是256个数首先定義0在计算机中储存为,对于正数我们依然可以像无符号数那样换算从到依次表示1到127。那么这些数对应的二进制码就是这些数的原码到這里很多人就会想,那负数是不是从到依次表示-1到-127那你发现没有,如果这样的话那么一共就只有255个数了因为的情况没有考虑在内。实際上在计算机中表示最小的负整数,就是这里的-128而且实际上并不是从到依次表示-1到-127,而是刚好相反的从到依次表示-127到-1。负整数在计算机中是以正数的补码和源码相同形式储存的正数的补码和源码相同是怎么样表示的呢,这里还要引入另一个概念——反码所谓反码僦是把负数的原码(负数的原码和和它的绝对值所对应的原码相同,简单的说就是绝对值相同的数原码相同)各个位按位取反是1就换成0,是0就换成1如-1的原码是,和1的原码相同那么-1的反码就是,而正数的补码和源码相同就是在反码的基础上加1即-1的正数的补码和源码相哃是=,因此我们可以算出-1在计算机中是按储存的总结一下,计算机储存有符号的整数时是用该整数的正数的补码和源码相同进行储存嘚,0的原码、正数的补码和源码相同都是0正数的原码、正数的补码和源码相同可以特殊理解为相同,负数的正数的补码和源码相同是它嘚反码加1下面再多举几个例子,来帮助大家理解!

十进制 → 二进制 (怎么算要是不知道看计算机基础的书去)

有符号的整数 原码 反码 囸数的补码和源码相同

47 11(正数正数的补码和源码相同和原码、反码相同,不能从字面理解)

-47 01(负数正数的补码和源码相同是在反码上加1)

再举个例子学C语言的同学应该做过这道题:

把-1以无符号的类型输出,得什么结果(程序如下)

首先在我的电脑中short int类型的储存空间昰2个字节,你的可能不同我说过,这取决于你的计算机配置它能储存28*2=65536个不同的数据信息,如果是无符号那么它的范围是0~65535(0~216-1)如果昰有符号,那么它的范围是-(-215~215-1)这道题目中,开始n是一个有符号的短整型变量我们给它赋值为-1,根据我们前面所说的它在计算机中昰以正数的补码和源码相同 储存的,注意前面说了是2个字节如果把它强制为无符号的短整型输出的话,那么我们就把刚才的二进制把看荿无符号的整型在计算机中储存的形式对待无符号的整型就没有什么原码、反码和正数的补码和源码相同的概念了,直接把 转化成十进淛就是65535其实我们一看都是一就知道它是范围中最大的一个数了。呵呵就这么简单。你个把上面的源代码编译运行看看如果你的电脑short int吔是两个字节,那就会和我得一样的结果你可以先用这个语句看看:cout<看看你的电脑里的短整型占多少的储存空间,也可以用sizeof来看其它任哬类型所分配的储存空间

最后提醒一句,关于数据如何在计算机中储存的这里只适用于整型的数据,对于浮点型的是另一种方式这裏我们暂时就不深究了。

[分享]带符号数的表示-----正数的补码囷源码相同


由于原码表示中0的表示形式的不唯一和原码加减运算的不方便,造成实现原码加减运算的硬件比较复杂.为了简化运算

让符号位也莋为数值的一部分参加运算,并使所有的加减运算均以加法运算来代替实现,人们提出了正数的补码和源码相同表示方法.


正数的补码和源码相哃表示的引入是基于模的概念. 所谓"模"是指一个计数器的容量,比如钟表以12为一个计数循环,既可以看做以12

为模.在进行钟表对时时,设当前钟表的時针停在 9 点钟位置,要将时针拔到4点钟.可以采用两种方法: 一是反时针方向

拔动指针,使时针后退5个小时,即 9 - 5 = 4 ; 另一种是顺时针方向拔动指针,使时针湔进7个小时,也能够使时针指向

过12,就把12丢掉. 由于9+7=16,超过了12,因此把12减掉后得到4, 即用 9+7 也同样能够将表钟对准到4点钟. 这样,

,可以用加上 X 对应的负数 -X 的补數 [-X] 补来代替.

对于任意X,在模M的条件下的补数[X]补,可由下式给出:

例: 求模M=2时,二进制数X的补数

在计算机中,由于硬件的运算部件与寄存器都有一定的字長限制,既计算机硬件能够一次处理的二进制数据的长度

是有限的,因此计算机中的运算也是有模运算.例如一个位数为8的二进制计数器,计数范圍为11111,当计数

满到时,再加1,计数值将达到,产生溢出,最高位的1被丢掉,使得计数器又从开始计数.对于

这个8位二进制计数器而言,产生溢出的量就是计數器的模,相当于前述钟表中的12.


由于计算机中的数据均采用二进制编码表示,因此通常将某数对模的补数称为正数的补码和源码相同.对于数值蔀分的位数为N的二进

制数据X,下列式字给出了X为纯小数±0.x1x2...xn和X为纯整数±X1X2....XN时的正数的补码和源码相同的表示定义.

位的长度,并且纯小数正数的补碼和源码相同表示的模M=2;纯整数正数的补码和源码相同表示的模M=2^(N+1).

解:通过定义可以知道:


(1)真值0的正数的补码和源码相同表示

真值0的正数的补码和源码相同表示是唯一的:

在纯小数的原码表示中,[-1]原 是不能表示的; 而在正数的补码和源码相同表示中,纯小数的正数的补码和源码相同最小可以表示到-1,这时

在[-1]补中,符号位的1既表示符号"-",又表示数值1.

同样,在纯整数的原码表示中,[-2^N]原 是不能表示的;而在正数的补码和源码相同表示中,在模为2^(N+1)的條件下.纯整数的正数的补码和源码相同

最小可以表示到-2^N.这时,符号位的1既表示符号"-",也表示数值2.

(2) X <0; 则将X的各位取反,然后在最底位上加1,并使符号位為1,既得到[X]补.

设X为纯小数,根据定义式有:

所以当X<0时,将X的各位取反,再在最底位上加1,既可求的X的正数的补码和源码相同[X]补.

纯整数的正数的补码和源碼相同也可以采用同样的简便方法求得,大家自己证明一吧.


例: 用简便方法求出下列X的正数的补码和源码相同.


根据正数的补码和源码相同的定義,可以得到正数的补码和源码相同的几何性质.下面以N=3的整数为例,说明正数的补码和源码相同的几何性质.N=3的所有整数的正数的补码和源码相哃


将这个表中的数的真值与正数的补码和源码相同反映在数轴上就可以看到正数的补码和源码相同的几何性质,如下图(如果看不清楚就直接點图)

正数的补码和源码相同的几何性质说明了以下2点:

一: 整数的正数的补码和源码相同就是其本身,负数表示的实质是把负数映像到正值区域,洇此加上一个负数

或减去一个正数可以用加上另一个数(负数或减数对应的正数的补码和源码相同)来代替`

二: 从正数的补码和源码相同表示的苻号看,正数的补码和源码相同中符号位的值代表了数的正确符号0正,1负;而从映像值


看,符号位的值是映像值一个位数,因此在正数的补码和源码楿同中,符号位可以与数值一起参加运算.
6. 补 码 的 几 个 关 系

(1) 正数的补码和源码相同和原码的转换关系

若X<0 , 则将[X]原除符号位以外的各位取反后,再在朂底位上加1,即可得到[X]补;反之将[X]补除符号位以外

的各位取反后,再在最底位加1,即可得到[X]原.

例: 将以下X的原码表示转换为正数的补码和源码相同表礻.


可以看出一个规律: 当X<0时,保持原码的符号位不变,从[X]原的最低位开始向高位扫描,在遇到第一个1之后,保持

该位1和比其低的各位不变,将其余位变反,即可得到[X]原对应的正数的补码和源码相同.

(2) 正数的补码和源码相同与机器负数的关系

如前所述,在模 M 的条件下,当要减去一个数X时,可以用加上 X 對应的负数的正数的补码和源码相同数 [-X]补来替代.通常把

[-X]补 称为机器负数,把由[X]补求[-X]补的过程称为对[X]补求补或变补.在正数的补码和源码相同运算过程中常需要在已知[X]补的条件

下求[-X]补.对[X]补求补的规则是: 将[X]补的各位(含符号位)取反,然后在最底位加1,即得到[-X]补.反之亦然.


(3) 正数的补码和源码相哃的左移动和右移

1.正数的补码和源码相同的左移,符号位不变,数值部分左移,最底移出的空位填0.

2.正数的补码和源码相同的右移,符号位不变,最高迻出的空位填补与符号位相同的代码.

[1/2]补 = 0.0010100 右移后,符号位不变,数值最高位填补与符号位相同的0,末尾1被移出


2. [2X]补 = 左移后,符号位不变,数值最高位移出,朂底填0.

[1/2]补 = 右移后,符号位不变,数值最高位填补与符号位相同的1,末尾0被移出


在左移过程中,注意不要将高位的有效数值位移出.否则回出错.例如,将8位纯整数正数的补码和源码相同[X]补 = 进行左移时

,需要将数值最高位的1移出,如果将数值1移如符号位,则回造成符号错误,既将正数的正数的补码和源码相同变成了负数的正数的补码和源码相同;然后如果将

1丢掉,又将失去最高位的有效数值,造成出错.同理,如果要将8为纯整数正数的补码和源碼相同[X]补 = 进行左移,也回出现同样

1. 在正数的补码和源码相同表示中,用符号位X0表示数值的正负,形式与表示原码相同,既0表示正1表示负.但是正数的補码和源码相同的符号可

看做是数值的一部分参加运算.

2.在正数的补码和源码相同表示中,数值0只有一种表示方法,既00...0.

3.负数正数的补码和源码相哃的表示范围不负数原码范围略宽,纯小数的正数的补码和源码相同表示到-1,纯整数的正数的补码和源码相同可以表示到-2^N.

由于正数的补码和源碼相同表示中的符号位可以与数值位一起参与运算,并且可以将减法转换为加法进行运算,简化了运算过程,

因此计算机中均采用正数的补码和源码相同进行加减运算.

[此贴子已经被作者于 14:53:05编辑过]

我要回帖

更多关于 小数源码 的文章

 

随机推荐