引言(只想看怎么转换的可以跳过这一段)
数值数据(1,0.1..)在计算机中以(补码/原码/移码/反码)中的其中一种形式存在于计算机中。比如说22(无符号数)这个数,你要存在于计算机的话你总不可能直接在硬盘上存一个22啊,因为计算机的存储器中只能存储0和1.所以在计算机中存的肯定是22的二进制形式:10110。现在我们再来思考一下-22(带符号数)怎么存储呢?这个‘ - ’ 在计算机中怎么存储呢?
人们想到:我们自己规定一下+,-怎么表示不就完事了吗?(于是原码出来了)。
过了若干年后,人们发现:这些数字存储是没问题了,但是我存储了以后我还要对这个数字进行运算啊(+,-,*,/...),这个时候我们的数字如果在计算机中以原码的形式存储的话,对他们这些原码计算太麻烦了(于是补码出来了)。比如:计算-2 + 1 = ?。如果按照(三位)原码来计算 110 + 001 = 111. 111不是-3吗?很明显原码在计算的时候是不方便的,但是反之如果-2和1和补码表示的话:110 + 001 = 111。(怎么还是111,没什么变化啊?)其实这个是因为补码的表示方法不同于人们的思维啊!!(所以我才会写怎么变补码的啊)111 -》101-》-01-》-1。有同学可能看不懂我刚刚的怎么成111 变成 -1的,接下来就来说一下怎么变化的。
反码,移码。目前我也不知道为什么要出现。
说了这么多我们就来看看是怎么将正值转成各种码的吧。在这里不会涉及为什么补码是这样的一种规则只是告诉你怎么转。我也在网上曾经搜索过为什么补码是这种的规则但是怎么说呢,感觉没多少帮助。可能是对于我们这种初学者没多大的用处吧,不过感兴趣的还是可以去百度一下。
如何转换(一):定点整数的转换
在这个步骤的讲解中我们以:将-22转成7位的x码为例(x:原,补,移,反)
第一步:将真值转成:带符号的,满足位数的,二进制数字。
第二步:判断正负,如何将其变成x码
定点小数点转换也是用前面点二步方法来完成点,只不过是在第二步将符号转成二进制点时候,小数点前面点0和+,-两个东西转成一个二进制而已。
题外话