在计算机中,负数以其正值的补码形式表达。
负数源数据不管符号的正值称为原码,对其进行取反,取反后的数据称为反码。比如原来数据为-5,先不管其符号,将原数据正值(二进制)5为00000101,取反后的反码为11111010
对反码加1 11111010+1=11111011,此值即为-5的二进制表示。
二进制变换,说的都是整数。负小数这样的数字,需要使用浮点数形式。浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。
一个浮点数a由两个数m和e来表示:
a=m×b^e。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。
m(即尾数)是形如±ddddddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s代表+或者-)来表示正负,这样m必须是正的。e是指数。
扩展资料:
浮点加法减法运算:
设有两个浮点数x和y,它们分别为:
x=Mx2^Ex
y=My2^Ey
其中Ex和Ey分别为数x和y的阶码,Mx和My为数x和y的尾数。
两浮点数进行加法和减法的运算规则是:
设Ex小于等于Ey,则x±y=(Mx2^(Ex-Ey)±My)2^Ey,
完成浮点加减运算的 *** 作过程大体分为四步:
1、0 *** 作数的检查;
2、比较阶码大小并完成对阶;
3、尾数进行加或减运算;
4、结果规格化并进行舍入处理。
参考资料:
百度百科-浮点数 (有理数)
恩!首先要指出你的一个错误!int的范围不是(-128----127)这个是char的范围,范围的大小是由类型所占有的字节来决定的。如此所示:char是一个字节8bit,那么在二进制中,8bit最大值是255,最小值是0(在是在无符号时)如果是有符号的话那么就还有一位是符号为,最高位是符号为。例如:1111 1111:如果是有符号的char数据那么这个数的-1;最高是符号位,如果是1,就是负数,如果是0是正数。
0111 1111 就是+127;
那么1111 1111 怎么理解是-1嗯!在数电中提到,对于一个负数要用它的反码来表示。
如:1111 1111 的反码是1000 0001怎么的来呢!?
首先,我们要得到-1的值,那么第一步是的好1000 0001,最高位1是符号位,最后一个1是数值位。但是在机器中我们要用反码来表示此值。那么就要求他的反码。反码的求法是符号位不变。数值位取反加一。
取反后是结果是:1111 1110
再加一的结果是:1111 1111
如果是1,那么1 的8位表示是0000 0001
解释的很少!你可以自己看看,如果不懂可以在聊!负数转二进制的时候只不过是前面多了一位表示正负的二进制,比如-32转换为八位的二进制就是1001111,然后转为八进制和十六进制的时候就把转换好的二进制再转换为八进制和十六进制就好了。嘿嘿!仔细点儿,慢慢来就好了正数、负数,应该先变成补码然后再按照普通二进制来计算即可
3FH、D0H,它们到底是数,还是码
如果已经是补码,那么就是:3FH
+
D0H
=
10FH
如果要求八位的结果,那就是
0FH
前面的1,可以视为进位
=
1一般用补码方式表示,举例说明:
-52,假设存储的数据是8位二进制数,即8位二进制补码
先将52转换成二进制数:00110100B
取反:11001011B
加1:11001100B
则-52D的8位二进制补码为11001100B
如果已知11001100B是有符号数,因为最高位是1,则这个码是用补码表示的一个负数
11001100B减1=11001011B
取反=00110100B=52D
则可知:11001100B是-52D的补码表示
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)