原码反码补码都是八位吗,原码反码补码为什么是8位的,如-25的原码是1 0011001,而不是1 11001,中间怎么多出俩0
原码反码补码都是八位吗,原码反码补码为什么是8位的,如-25的原码是1 0011001,而不是1 11001,中间怎么多出俩0详细介绍
本文目录一览: 原码、补码、反码
在计算机系统中,数值,一律采用补码表示和存储。
原码和反码,都是无用的。
在计算机中,也根本就没有原码和反码。
所以,原码反码取反加一符号位不变,都是没影的事。
老外数学不好,瞎编这些乱七八糟的东西,不用理它。
这三种都是对计算机中数字的二进制的表现方法。 字节型数据,占8位,那么它的原码、反码、补码都是8位。字节型数据只有8位,只能表示0~255。 字型数据,占16位,那么它的原码、反码、补码都是16位。字型数据占16位,可以表示0~65535。 负数在计算机中以补码的形式存在! 三者的规制: 一、正整数的原码、反码、补码完全一样,即符号位固定为0,数值位相同
二、负整数的符号位固定为1,由原码变为反码、补码时,规则如下:
要想求得某数的原码、补码、反码,需进行以下步骤
原码 反码 补码都是8位的吗?999的原码反码补码是多少?
计算机内部的 CPU,位数,是固定的。
因此才有八位机、16位机 ...,等等。
学习补码等,一般都是用八位机来代表。
学会了基本方法,你就可以任意指定位数。
1)先回答第一个问题:
原码、反码、补码是相互联系的,对于同一个数据元素(记住不是数),三者应具有相同的位数,而实际的位数要看具体的数据类型。
比如字节型数据,占8位,那么它的原码、反码、补码都是8位。
字型数据,占16位,那么它的原码、反码、补码都是16位。
脱离数据类型谈原码、反码、补码是没有意义的。
2) 基于问题一,对于999这个数,必须要给定其数据类型,才能确定其原码、反码、补码。字节型数据只有8位,只能表示0~255,肯定不行,字型数据占16位,可以表示0~65535,那么可以选择一个字型数据,这样它的三码就是下面的形式:
a、字型数999原码(二进制):0000 0011 1110 0111
b、字型数999反码(二进制):1111 1100 0001 1000
c、字型数999补码(二进制):65536 - 999 = 64537(它的补码就是64537)翻译成二进制就是1111 1100 0001 1001
以上三者都可以通过windows自带的calc计算器程序进行验证。
3)这里补充说明一下补码的含义:你可以类比小学数学中的补角,45度的补角是135度,为什么不是125或者115?因为课本中对补角已经做了定义:两角之和等于180度的角互为补角。这个180度就是一个标准,它相当于一个数据类型的模(一个数据类型所能表示的数据范围):
比如8位数可以表示0~255共256个数(记住不是255,因为还有0也要算进去),那么8位数的模就是256。同理, 16位数可以表示0~65535共65536个数,那么它的模就是65536 。
对于一个数求补码,不防大胆地认为就是找回模被“丢掉”的那部分数:
比如你要求8位数1的补码,那么要使1变成256,你必须给它补上255才行,所以8位数1的补码就是255. 。同理,要求16位数1的补码,那么要使1变成65536,你必须给它补上65535才行,所以16位数1的补码就是65535 。
再比如你要求8位数2的补码,那么要使1变成256,你必须给它补254才行,所以8位数2的补码就是254 。同理,要求16位数2的补码,那么要使1变成65536,你必须给它补上65535才行,所以16位数1的补码就是65535 。
按照上面的方法,对于8位数,你可以很容易求得2、3、4直到127的补码,这里要注意一点8位数128的补码就是128,它的二进制就是1000 0000,那么根据计算机的约定,最高位为1的数表示负数,因此这也是为什么8位有符号数字可表示-128 ~ +127的原因。
二进制的原码 反码 补码为什么有8位的,也有16位的? 请不吝赐教,谢谢!
学习,一般用 8 位,即可掌握理论、方法。
而在实用时,CPU 通常则是 16 位、32 位、64 位的。
8位16位32位是存储的方式不同。转换之前是要指定存储长度的。转换方法请查看视频教程。
原码反码补码移码概念和转换方法
原码反码补码为什么是8位的,如-25的原码是1 0011001,而不是1 11001,中间怎么多出俩0
整型都8位
习惯上都是8位的, 你记住就好
因为每个比特为四个一字节,你说是的八位的反码补码,最前面的为符号位代表正负数,后七位为二进制的数,如:25就改写为00011001。八位码取值范围为-127~127,其他类型还有16位32位的
原码反码补码为什么是8位的,如-25的原码是1 0011001,而不是1 11001,中间怎么多出俩0
计算机的位数,是固定的。
早期,常用的是:8 位机、16 位机;
现在,是:32 位机、64 位机。
给你一个数,位数不够,你就填上 0,没毛病。
别忘了采纳。
8位和16位二进制数的原码、补码和反码可表示的数的范围分别是多少
8位:正数:原码:00000000-01111111 反码:00000000-01111111 :00000000-01111111正数的话,原码反码补码一样8位:负数:原码:00000000-01111111 反码:10000000-11111111 补码:00000001-(1)00...
原码,反码,补码的编码规则?
关于原码反码补码,您可以借本
《计算机组成原理》看看计算机中数据的表示形式。
首先更正下楼上的说法,正数的原码反码补码都相同,即0011的反码也为0011
!!切记
举例来说:对于正数3,其二进制形式为
0011,我们把
0011成为成为真值,在计算机中用0或1表示正负号,那么
0011在计算机中原码可以表示为00011(第一位为符号位)。反码补码不变。
对于负数,反码即按位取反,比如10011可表示-3,10011为原码,那么符号位不变,其余位按位取反即反码11100.
补码的存在是为了简化计算的,其符号位一起参加运算,从而对于减法可转化为加法。补码的实质就是mod2。比如我们的钟表是mod12的,那么14点钟我们也可以说是下午2点。获得补码的方法是“按位取反,末位加1”那么10011的补码便是11101.。。。。。。。。。。
机器数即数值在计算机中的表示形式。
不知您明白了吗?
计算机是按二进制方式存储数据的
在计算机中表示整型数据有以下几种方法:
1.二进制补码
2.二进制反码
3.偏移表示法
4.带符号的数表示法
带符号的数表示法最高有效位是符号位,1为负,0为正。比如:00000001为1,10000001为-1
二进制反码是简单地把正数取反就是对应的负数了,比如00000001为1,11111110为-1
二进制补码在计算机中比较常用,当表示负数的时候,在原来原码的基础上再加1
偏移表示法用一个数与它相减就得到所需的数
Top
正数:原码,补码,反码一致
负数:原码:-(绝对值原码)
反码:原码除符号位外取反
补码:反码+1
计算机中,并没有原码和反码。
正负数据,在计算机中,只是以补码存放的。
==============
下面以八位二进制来说明补码的编码规则。
八位二进制,共有 256 个补码。
数字 0,就是以 0000 0000 存放。
数字 1,就是加上 1,得 0000 0001。
其它,继续加,就行了。
数字 127,就是 0111 1111。
以上就是 0~127 的补码。
==============
负数,递减就行了。
数字-1,就从 0,减去一,即:
0000 0000-1 = (借位 1) 1111 1111。
只保留八位,就是 1111 1111 (十进制 255)。
数字-2,就再减一,得:1111 1110 (= 254)。
数字-3,就再减一,得:1111 1101 (= 253)。
其它,继续减,即可... ...
数字-128,最后就得到:1000 0000 (= 128)。
以上这些,就是-1~-128 的补码。
==============
计算公式:
负数的补码=【256+该负数】
正数的补码,就是正数本身
(如果需要二进制,你自己再变换。)
八位补码可以表示:-128~+127。
==============
用补码代替负数,就可以把减法,转换为加法运算。
因此,计算机只要有一个加法器,就够用了。
例如: 7-3 = 4。
用补码的计算过程如下:
7 的补码=0000 0111
-3的补码=1111 1101
--相加-------------
得: (1) 0000 0100 = 4 的补码
舍弃进位,只保留八位作为结果,就是 4。
这就用加法,解决了负数以及减法的问题。
------
原码和反码,并没有这些功能。
所以,在计算机中,根本就没有原码和反码。
所谓的“取反加一”,由谁算呢?
计算机,可不做这些事。
8位二进制原码 补码 反码的表示范围各是多少 怎么算的?
8位二进制原码的表示范围:-127~+127。
8位二进制反码的表示范围:-127~+127。
8位二进制补码的表示范围:-128~+127。
反码是数值存储的一种,多应用于系统环境设置,如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。在计算机内,定点数有3种表示法:原码、反码和补码。
原码是计算机机器数中最简单的一种形式,数值位就是真值的绝对值,符号位位“0”时表示正数,符号位为“1”时表示负数,原码又称带符号的绝对值。为了方便整数和小数区别,整数的符号位与数值位之间用“,”隔开,小数的符号位与数值位之间用“.”隔开。
一文搞懂原码、反码、补码
在计算机系统中,数值,一律用补码来表示和存储。
必须掌握的是“数值与补码”的转换。
原码和反码,在计算机中,都不存在。
所以,它们,都没有任何用处,懂不懂,并没有什么关系。
----------------------
搞懂补码,并不难。补码的来源,可以说是日常所见。
之所以难懂,就是被哪些数学不好的老外,给误导了。
你看 2 位 10 进制(0~99),计数周期是:10^2 = 100。
算式:
25 - 1 = 24
25 + 99 = (一百) 24
如果你只取 2 位数,舍弃进位 10^2 = 100,
+99 和-1 就是等效的。
加法和减法运算,也是等效的。
换算公式: 正数 = 负数 + 周期。
得出的正数,就是“负数的补数”。
----------------------
计算机,每次计算的位数,是固定的。
八位机就是八位,16 位机就是 16。。。
位数,限定了之后,负数就可以用补码(正数)代替。减法运算,也就消失了。
计算机,仅用一个加法器,就能走遍天下。
----------------------
八位的二进制是:0000 0000~1111 1111(十进制255)。
计数周期是 2^8 = 256。
-1 的补码就是:256-1 = 255(二进制 1111 1111)。
-2 的补码就是:256-2 = 254(二进制 1111 1110)。
。。。
计算公式:
负数的补码 = 该负数 + 周期。
零和正数,不存在补码,直接就可以参加计算。
----------------------
补码,就是这么计算出来的。
补码,和原码反码,毫无关系。
计算机中,也并没有原码反码,因此,就不必讨论它们。
原码反码取反加一符号位不变。。。
脑子不好用的老外,当然就要这么做了。
需要声明的是,本文涉及到的数字及运算均基于 8位bit 下的值。
最高位为符号位,0代表正数,1代表负数,非符号位为该数字绝对值的二进制表示。
如:
127的原码为0111 1111 -127的原码为1111 1111
正数的反码与原码一致;
负数的反码是对原码按位取反,只是 最高位(符号位)不变 。
如:
127的反码为0111 1111 -127的反码为1000 0000
正数的补码与原码一致;
负数的补码是该数的 反码加1 。
如:
127的补码为0111 1111 -127的补码为1000 0001
总结一下就是:
下面就来探讨一下,为啥要用补码来表示数字。
如果计算机内部采用原码来表示数,那么在进行加法和减法运算的时候,需要转化为两个绝对值的加法和减法运算;
计算机既要实现加法器,又要实现减法器,代价有点大,那么可不可以只用一种类型的运算器来实现加和减的远算呢?
很容易想到的就是 化减为加 ,举一个生活中的例子来说明这个问题:
时钟一圈是360度,当然也存在365度,但其实它和5度是一样的;
相同的道理,-30度表示逆时针旋转30度,其与顺时针旋转330度是一样的;
这里数字360表示时钟的一圈,在计算机里类似的概念叫 模 ,它可以实现 化减为加 ,本质上是将 溢出的部分舍去 而不改变结果。
易得,单字节(8位)运算的模为256=2^8。
在没有符号位的情况下,127+2=129,即:
这时,我们将最高位作为符号位,计算机数字均以补码来表示,则1000 0001的原码为减1后按位取反得1111 1111,也就是-127。
也就是说,计算机里的129即表示-127,相当于模256为一圈,顺时针的129则和逆时针127即-127是一样的。
故可以得到以下结论:
负数的补码为 模减去该数的绝对值 。
如-5的补码为:
-5=256-5=251=1111 1011(二进制)
同样的,临界值-128也可以表示出来:
-128=256-128=128=1000 0000(二进制)
但是正128就会溢出了,故单字节(8位)表示的数字范围为-128--127。
最后,我们来看一下,补码是如何通过模的 溢出舍弃 操作来完成 化减为加 的!
16-5=16+(-5)=11
1 0000 1011将溢出位舍去,得0000 1011(二进制)=11。
好的,本文分享就到这里,希望能够帮助到大家。