正负整数和⼩数转⼆进制
1. 转成⼆进制主要有以下⼏种:正整数转⼆进制,负整数转⼆进制,⼩数转⼆进制;
1、正整数转成⼆进制。要点⼀定⼀定要记住哈:除⼆取余,然后倒序排列,⾼位补零。
也就是说,将正的⼗进制数除以⼆,得到的商再除以⼆,依次类推知道商为零或⼀时为⽌,然后在旁边标出各步的余数,最后倒着写出来,⾼位补零就OK咧。哎呀,还是举例说明吧,⽐如42转换为⼆进制,如图1所⽰操作。
2.
42除以2得到的余数分别为010101,然后咱们倒着排⼀下,42所对应⼆进制就是101010.如图2所⽰更直观的表达。
3.
计算机内部表⽰数的字节单位是定长的,如8位,16位,或32位。所以,位数不够时,⾼位补零,所说,如图3所⽰,42转换成⼆进制以后就是。00101010,也即规范的写法为(42)10=(00101010)2.赶紧记住吧。
二进制小数如何转换成十进制
4.
2、负整数转换成⼆进制
⽅法:先是将对应的正整数转换成⼆进制后,对⼆进制取反,然后对结果再加⼀。还以42为例,负整数就是-42,如图4所⽰为⽅法解释。最后即为:(-42)10=(11010110)2.
5.
3、⼩数转换为⼆进制的⽅法:对⼩数点以后的数乘以2,有⼀个结果吧,取结果的整数部分(不是1就是0喽),然后再⽤⼩数部分再
乘以2,再取结果的整数部分……以此类推,直到⼩数部分为0或者位数已经够了就OK了。然后把取的整数部分按先后次序排列就OK 了,就构成了⼆进制⼩数部分的序列,举个例⼦吧,⽐如0.125,如图5所⽰。
6.
如果⼩数的整数部分有⼤于0的整数时该如何转换呢?如以上整数转换成⼆进制,⼩数转换成⼆进制,然后加在⼀起就OK了,如图6所⽰。
7.
4、整数⼆进制转换为⼗进制:⾸先将⼆进制数补齐位数,⾸位如果是0就代表是正整数,如果⾸位是1则代表是负整数。
先看⾸位是0的正整数,补齐位数以后,将⼆进制中的位数分别将下边对应的值相乘,然后相加得到的就为⼗进制,⽐如1010转换为⼗进制,⽅法如图7所⽰。
8.
5、若⼆进制补⾜位数后⾸位为1时,就需要先取反再换算:例如,11101011,⾸位为1,那么就先取反吧:-00010100,然后算⼀下
10100对应的⼗进制为20,所以对应的⼗进制为-20,⽅法如图8所⽰。
9.
6、将有⼩数的⼆进制转换为⼗进制时:例如0.1101转换为⼗进制的⽅法:将⼆进制中的四位数分别于下边(如图9所⽰)对应的值相
乘后相加得到的值即为换算后的⼗进制。
END
为什么要⽤反码和补码?
先看正码表⽰,设N=4, -1 = 1001; -2 = 1010, -1 > -2,但是 1001 < 1010,两种映射的编码的序性不⼀致
反码呢,-1=1110, -2 = 1101,  Ok,序性正确了,
然⽽,这⾥有⼀个问题,就是正数与负数之间,有⼀个1的缝隙。-1=1110, 1=0001,从循环编码的⾓度,这两个编码相差3:1110->1111->0000->0001。
因为正零和负零是两个数,导致两个数系的断裂。怎么办?让负数整体往正数靠拢,迈进⼀步(+1),负1没有了。
这就是求补的过程了。反码再加1。
我想,当初写出计算机的编码设计论⽂的⼤⽜(好像是图灵还是什么的),当然有更深的考虑。但从序性和数系联系的⾓度,补码的发明是相当合理的。⽽这种合理性,我个⼈认为,正是其优点。
从机器实现的⾓度,并不算复杂,但相对反码的机器实现,还是多了+1的进位延时。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。