二进制变换,说的都是整数。负小数这样的数字,需要使用浮点数形式。浮点计算是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。
一个浮点数a由两个数m和e来表示:
a=m×b^e。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。
m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s代表+或者-)来表示正负,这样m必须是正的。e是指数。
扩展资料:
浮点加法减法运算:
设有两个浮点数x和y,它们分别为:
x=Mx*2^Ex
y=My*2^Ey
其中Ex和Ey分别为数x和y的阶码,Mx和My为数x和y的尾数。
两浮点数进行加法和减法的运算规则是:
设Ex小于等于Ey,则x±y=(Mx*2^(Ex-Ey)±My)*2^Ey,
完成浮点加减运算的操作过程大体分为四步:
1、0操作数的检查;
2、比较阶码大小并完成对阶;
3、尾数进行加或减运算;
4、结果规格化并进行舍入处理。
参考资料:
百度百科-浮点数 (有理数)
先看数的绝对值。
然后将数分成整数和小数两部分。整数采用除基数再倒取余数法。
小数部分采用乘基数再取整数法。例如:
十进制小数-6.8125化为二进制,基数为2
(1)整数部分为5:
6/2=3……0
3/2=1……1
1/2=0……1
故整数6的二进制数为110
(2)小数部分为0.8125
0.8125*2=1.6250取出整数1
0.6250*2=1.2500取出1
0.2500*2=0.5 取出0
0.5 *2=1.0 取出1
故二进制数为1101
综上,6.8125=110.1101
即-6.8125=-110.1101
另外,在电脑中在数的左端加0表示正数,加1表示负数。有原码、补码、反码等概念。
说得很清楚了,楼主可自行解决补充中的两个数。注:0.23无法用有限长的位数表示,依机器数不同再定。饿,说了这么多,才发现悬赏分值才5。。。呵呵呵
这要看用定点数还是浮点数来表示负小数了。定点数的表示与整数类似,可以用原码、反码、补码等等方法,浮点数则只用原码,有相应的IEEE标准,例如IEEE75 整数部分除2倒取余,小数部分乘二取整。比如 -1.25 (假设整数部分用8位来表示)
值为:10000001.01(最前面的1为负号)。
负数在电脑中一般都是用补码存放。补码求法是原码取反后再+1
如:
-2 ,原码是1000 0010
注意最前面的1是负号
然后取反 就是1 111 1101 ,再加1,结果是
1 111 1110
这就是-2的二进制了。
负小数如何用二进制表示?
如十进制的-1.25 和-1.23 分别如何用二进制来表示
整数变整数,小数变小数,小数点不可动。
-1 . 25 = -1 . 01 (二进制)。
-1 . 23 = -1 . 0011 1010 1110 0001 (二进制)。
-------------------------
说到二进制,许多人就联想到:计算机里面的补码。
负号,应该写成 1 !
其实,你们的想法,是不对的。
动不动就要扯到符号位取反加一,这可是病啊!
-1.25的原码表示为11.01