原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x]原。
例如,x1=
+1010110
x2=
一1001010
其原码记作:
[x1]原=[+1010110]原=01010110
[x2]原=[-1001010]原=11001010
原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:
最大值为01111111,其真值约为(099)10
最小值为11111111,其真值约为(一099)10
当用8位二进制来表示整数原码时,其表示范围:
最大值为01111111,其真值为(127)10
最小值为11111111,其真值为(-127)10
在原码表示法中,对0有两种表示形式:
[+0]原=00000000
[-0]
原=10000000
(2)补码表示法
机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数x,则x的补码表示记作[x]补。
例如,[x1]=+1010110
[x2]=
一1001010
[x1]原=01010110
[x1]补=01010110
即
[x1]原=[x1]补=01010110
[x2]
原=
11001010
[x2]
补=10110101+1=10110110
补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:
最大为01111111,其真值为(099)10
最小为10000000,其真值为(一1)10
采用8位二进制表示时,整数补码的表示范围:
最大为01111111,其真值为(127)10
最小为10000000,其真值为(一128)10
在补码表示法中,0只有一种表示形式:
[+0]补=00000000
[+0]补=11111111+1=00000000(由于受设备字长的限制,最后的进位丢失)
所以有[+0]补=[+0]补=00000000
(3)反码表示法
机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数x,则x的反码表示记作[x]反。
例如:x1=
+1010110
x2=
一1001010
[x1]原=01010110
[x1]反=[x1]原=01010110
[x2]原=11001010
[x2]反=10110101
反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。
例1
已知[x]原=10011010,求[x]补。
分析如下:
由[x]原求[x]补的原则是:若机器数为正数,则[x]原=[x]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[x]补=[x]原十1,即
[x]原=10011010
[x]反=11100101
十)
1
[x]补=11100110
例2
已知[x]补=11100110,求[x]原。
分析如下:
对于机器数为正数,则[x]原=[x]补
对于机器数为负数,则有[x]原=[[x]补]补
现给定的为负数,故有:
[x]补=11100110
[[x]补]反=10011001
十)
1
[[x]补]补=10011010=[x]原8位二进制原码的表示范围:-127~+127
8位二进制反码的表示范围:-127~+127
8位二进制补码的表示范围:-128~+127
n位二进制原码和n位二进制反码:-2^(n-1)-1~+2^(n-1)-1;n位二进制补码:-2^(n-1)~+2^(n-1)-1。
计算机中所有的数均用0,1编码表示,数字的正负号也不例外,如果一个机器数字长是n位的话,约定最左边一位用作符号位,其余n-1位用于表示数值。
在符号位上用"0"表示正数;用"1"表示负数。数值位表示真值的绝对值。凡不足n-1位的,小数在最低位右边加零;整数则在最高位左边加零以补足n-1位。这种计算机的编码形式叫作原码。
记作X=[X]原。例如在字长n=8的机器内:
小数: [+01011]原=01011000
[-01011]原=11011000
整数: [+1011]原=00001011
[-1011]原=10001011
代码中的小数点””是在书写时为了清晰起见加上去的,在机器中并不出现。
8位空间表示-127的补码是10000001。
-127的8位空间原码为-(1*2^7+1*2^6+1*2^5+1*2^4+1*2^3+1*2^2+1*2^1+1*2^0)=11111111,求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。所以为10000001。
扩展资料
补体解决了符号表示问题;将减法运算转化为加法运算BAI的补法运算,克服了源代码加减运算的缺点,可以有效简化算术机的设计。在计算机中,利用电子器件的特点,很容易实现补码、真值和源代码之间的转换。
补码表示将符号位和值位统一起来,使符号位和值位可以直接一起参与运算,也为以后乘数除法器等运算装置的设计提供了很大的方便。
参考资料:
8位二进制所能表示的无符号整数范围为0~255;8位二进制所能表示的带符号整数范围为-128~127。
无符号整数与带符号整数:
一、无符号整数
无符号数(Unsigned number)是相对于有符号数而言的,指的是整个机器字长的全部二进制位均表示数值位,相当于数的绝对值。
用二进制数的最高位表示符号,最高位是0,表示正数,最高位是1,表示负数。这种说法本身没错,可是如果没有下文,那么它就是错的。至少它不能解释,为什么字符类型的-1用二进制表示是“1111 1111”(16进制为FF);而不是我们更能理解的“1000 0001”。
二、带符号整数
有符号整数可表示正整数、0和负整数值。其二进制编码方式包含 符号位 和 真值域。 我们以8bit的存储空间为例,最左1bit为符号位,而其余7bit为真值域,因此可表示的数值范围是{-128,,127},对应的二进制补码编码是{10000000,,01111111}。
:转换:
(1)无符号整数转换为有符号整数 :
看无符号数的最高位是否为1,如果不为1(为0),则有符号数就直接等于无符号数;如果无符号数的最高位为1,则将无符号数取补码,得到的数就是有符号数。
(2)有符号整数转换为无符号整数:
看有符号数的最高位是否为1,如果不为1(为0),则无符号数就直接等于有符号数;如果有符号数的最高位为1,则将有符号数取补码,得到的数就是无符号数。
总结:有符号数与无符号数之间的转换,都要看要转换的数的最高位是否为1,如果不为1,则转换结果就是要转换的数的本身;如果为1,则转换结果就是转换的数(看作是负数)的补码。
无符号整数转换 百度百科
八位二进制就是8个按顺序排列的二进制数。
二进制在数学和数字电路中指以2为基数的记数系统,以2为基数代表系统是二进位制的。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示。
数字电子电路中,逻辑门的实现直接应用了二进制,因此现代的计算机和依赖计算机的设备里都用到二进制,每个数字称为一个比特。
扩展资料:
二进位计数制仅用两个数码,0和1,所以,任何具有二个不同稳定状态的元件都可用来表示数的某一位。而在实际上具有两种明显稳定状态的元件很多。例如,氖灯的"亮"和"熄";
开关的”开“和”关“; 电压的”高“和”低“、”正“和”负“;纸带上的”有孔“和“无孔”,电路中的”有信号“和”无信号“, 磁性材料的南极和北极等等,不胜枚举。
利用这些截然不同的状态来代表数字,是很容易实现的。
255
最大为11111111,而(11111111)2进制表示:2^7+2^6++2^1=2^8-1=255。
机器数是将符号"数字化"的数,是数字在计算机中的二进制表示形式。机器数有2个特点:一是符号数字化,二是其数的大小受机器字长的限制。
机器数有两个基本特点:
1、数的符号数值化。实用的数据有正数和负数,由于计算机内部的硬件只能表示两种物理状态(用0和1表示),因此实用数据的正号“+”或负号“-”,在机器里就用一位二进制的0或1来区别。
通常这个符号放在二进制数的最高位,称符号位,以0代表符号“+”,以1代表符号“-”。因为有符号占据一位,数的形式值就不等于真正的数值,带符号位的机器数对应的数值称为机器数的真值。 例如二进制真值数-011011,它的机器数为 1011011。
2、二进制的位数受机器设备的限制。机器内部设备一次能表示的二进制位数叫机器的字长,一台机器的字长是固定的。字长8位叫一个字节(Byte),机器字长一般都是字节的整数倍,如字长8位、16位、32位、64位。
扩展资料
机器数的表示方法
1、定点表示法
定点,即小数点固定,固定在有效数位的最前面或最后面。因为位置是固定的,所以可以隐藏。
在最前面则表示纯小数,在最后面则表示纯整数,因此在定点计算机的编程语言中,纯小数对应一种变量类型,纯整数对应一种变量类型。
由于只能表示纯小数或纯整数,在编程时要设置合适的比例因子。
2、浮点表示法
N = M x rE
r是浮点数阶码的底,又叫尾数的基数,通常r=2,但可改变。
r增大,可表示数的范围增大。
r增大,可表示数的个数增大。
r增大,可表示数的精度下降。
r增大,将使运算中移位的次数减少,运算速度提高。
E叫做阶码,纯整数,常用移码或补码表示。
M叫做尾数,纯小数,常用原码或补码表示。
E与M都是带符号的定点数。
参考资料来源:百度百科-机器数
对于十进制的数-27,在寄存器内是:1,1100101。
计算机存储负数采用补码的存储形式,所以我们要先计算出-27的原码形式:运用十进制转二进制的方法转为二进制形式为:1,0011011。然后再转化为补码,原码转化为补码的方法为将原码初符号位全部取反然后再加1。
所以得出存储的补码形式:1,0011011→1,1100100+1=1,1100101。
扩展资料:
补码的性质:
以补码定义式为基础,沿数轴列出典型的真值、原码与补码表示,可清楚了解补码的有关性质 。
1、在补码表示中,最高位x0(符号位)表示数的正负,在形式上与原码相同,即 0正 1负。但补码的符号位是数值的一部分,由补码定义式计算而得。例如,负小数补码中为 x0为1,这个 1是真值X(负)加模 2后产生。
2、在补码表示中,数 0只有一种表示,[+0]补 =[-0]补 =0000……0。
3、负数补码表示的范围比原码稍宽,多一种数码组合。对于定点数,若为纯小数,表示范围为:
-1~1-2^(-n),若为纯整数,表示范围为:-2^n~2^n-1。
原码求补码:
正数:
正整数的补码是其二进制表示,与原码相同。
例:+9的补码是00001001。
负数:
求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。
例:求-5的补码。
-5对应带符合位负数5(10000101)→除符号位外所有位取反(11111010)→加00000001(11111011)。
所以-5的补码是11111011。
0的补码:
数0的补码表示是唯一的。
[+0]补=[+0]反=[+0]原=00000000。
[ -0]补=11111111+1=00000000。
参考资料来源:百度百科-补码
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)