word中怎么添加补码下标(word2010添加补码下标怎么操作)
原标题:word中怎么添加补码下标(word2010添加补码下标怎么操作)
导读:
《大数据与人工智能通讯》头条为初学者添加了C、Java、Python、Scala、javascript等流行的计算机和大数据编程语言。希望大家以后多多关注本标题的更多内容。原码、补码、反码详解1.机器编号和真值在学习原码、补码和补码之前,需要先了解机器数和真值的概念。1、机器数量数字在计算机中的二进
《大数据与人工智能通讯》头条为初学者添加了C、Java、Python、Scala、javascript等流行的计算机和大数据编程语言。希望大家以后多多关注本标题的更多内容。
原码、补码、反码详解
1.机器编号和真值
在学习原码、补码和补码之前,需要先了解机器数和真值的概念。
1、机器数量
数字在计算机中的二进制表示形式称为该数字的机器号。机器编号已签名。在计算机中,数字的最高位用于存储符号。正数为0,负数为1。
例如,十进制数字+3的计算机字长为8位。转换成二进制后为。如果为-3,则为。
所以,这里的和是机器号。
2.真实价值
因为第一位是符号位,所以机器号的形式值不等于实际值。例如上面的有符号数,最高位1代表负数,其实际值为-3,而不是形式上的值131。因此,为了区分,将带有符号位的机器号对应的真实值称为机器号的真实值。
示例:的真实值=+=+1,的真实值==1
2、原码、补码、补码的基本概念及计算方法。
在探讨机器为什么使用补码之前,我们先来了解一下原码、补码和补码的概念。对于一个数字,计算机必须使用一定的编码方式来存储它。原码、补码和补码是机器存储的特定数字的编码。
1.原始代码
原码是符号位的绝对值加上真值,即第一位代表符号,其余位代表数值。例如,如果是8位二进制:
[+1]原始=
[-1]原始=
第一位是符号位。因为第一位是符号位,所以8位二进制数的取值范围是:
[,]
现在
[-127,127]
原始代码是人脑最容易理解和计算的表示形式。
2.反码
其补码表示形式为:
正数的补码是它本身
负数的补码以其原码为基础,符号位不变,其余位取反。
[+1]=[]原值=[]逆值
[-1]=[]原始=[]逆
可见,如果补码代表负数,人脑无法直观地看到它的值。通常需要将其转换为原始代码,然后进行计算。
3.补码
补码的表示方法为:
正数的补码是它本身
负数的补码在其原码的基础上,符号位不变,其余位取反,最后+1。
[+1]=[]原值=[]逆值=[]补码
[-1]=[]原=[]逆=[]补
对于负数,人脑无法直观地看到二进制补码表示中的值。通常还需要将其转换为原始代码来计算其值。
3、为什么要用原码、反码、补码?
在开始深入学习之前,我的学习建议是熟记上面的原代码、补码和补码的表示以及计算方法。
现在我们知道计算机可以用三种编码方法来表示数字。对于正数,三种编码方式的结果是相同的:
[+1]=[]原值=[]逆值=[]补码
所以没必要解释太多。但对于负数:
[-1]=[]原=[]逆=[]补
可以看出,原码、补码和补码是完全不同的。既然原码是人脑直接识别并用来计算表示的,那为什么还存在补码和补码呢?
首先,因为人脑可以知道第一位是符号位,所以在计算时我们会根据符号位来选择对真值区域进行加法和减法。。但对于计算机来说,加法和减法乘法器已经是最基本的运算了,应该设计得尽可能简单。计算机能够识别‘符号位’显然会让计算机的基本电路设计变得非常复杂!于是人们想出了在运算中包含符号位的方法。我们知道,根据算法,减去一个正数相当于加上一个负数,即:1-1=1+(-1)=0,所以机器只能加不能减,所以设计计算机操作更加简单。
于是人们开始探索如何让符号位参与运算而只保留加法。首先我们看一下原始代码:
计算十进制表达式:1-1=0
1-1=1+(-1)=[]原始+[]原始=[]原始=-2
如果用原码来表示数字,并且符号位也参与计算,显然减法的结果是错误的。这就是为什么计算机内部不使用原始代码来表示数字的原因。
为了解决原码相减的问题,出现了反码:
计算十进制表达式:1-1=0
1-1=1+(-1)=[]原值+[]原值=[]逆值+[]逆值=[]逆值=[]原值=-0
发现用补码进行减法运算时,结果的真值部分是正确的。唯一的问题实际上发生在特殊值“0”上。虽然人们理解+0和-0是相同的,但是0是有符号的,它没有任何意义。而且,会有两个代码,[]original和[]original,来表示0。
所以补码的出现解决了0和:这两种编码的符号问题
1-1=1+(-1)=[]原件+[]原件=[]补码+[]补码=[]补码=[]原件
这样,0就用[]来表示,之前引起问题的-0就不存在了。可以表示为[]-128:
(-1)+(-127)=[]原+[]原=[]补数+[]补数=[]补数
-1-127的结果应该是-128。在补码运算的结果中,[]的补码是-128。但注意,因为前面的-0的补码实际上是用来表示-128的,所以-128没有原码和补码表示。
使用补码不仅解决了0的符号和存在两种编码的问题,而且还可以多表示一个最小数。这就是为什么原码或补码表示的8位二进制的范围是[-127,+127],而用补码表示的范围是[-128,127]。
因为机器使用的是二进制补码,所以对于编程中常用的32位int类型来说,因为第一位代表的是符号位,所以可以表示的范围是:[-231,231-1]。当使用二进制补码表示时,多保存一个最小值。
四原码、反码、补码及更深入
计算机巧妙地将符号位参与到运算中,将减法变成了加法。它背后有什么样的数学原理?
将时钟视为一位十六进制数。如果当前时间是6点,我想将时间设置为4点,该怎么办?我们可以:
1.回拨2小时:6-2=4
2.向前拨10小时:(6+10)mod12=4
3.向前拨10+12=22小时:(6+22)mod12=4
2,3法中的mod指的是模运算,16mod12=4,即16除以12后的余数为4。
所以将时钟向后转动的结果可以用向前转动来代替!
现在的重点是如何用正数代替负数。从上面的例子中,我们可以感受到一些端倪,发现一些规律。但数学是严谨的。我们不能依靠感觉。
首先介绍一下数学中的一个相关概念:同余
一致性的概念
如果两个整数a和b除以整数m所得的余数相等,则称这两个整数a和b模m全等。
写为a==b(modm)
读作a和b模m全等。
示例:
4模12=4
16模12=4
28模12=4
所以4、16、28模12全等。
模负数
修改正数很容易。但是负数呢?
以下是mod运算:的数学定义
上面是截图。我找不到如何输入“删除边界”符号。下面是用'L'和'J'来代替上图:中的'removebounds'符号
x模y=x-yLx/yJ
上式的意思是:
xmody等于x减去y乘以x和y的商的下限。
以-3mod2为例:
-3模2
=-3-2xL-3/2J
=-3-2xL-1.5J
=-3-2x(-2)
=-3+4=1
所以:
(-2)模12=12-2=10
(-4)模12=12-4=8
(-5)模12=12-5=7
开始证明
回到时钟问题:
向后2小时=向前10小时
向后拨4小时=向前拨8小时
向后拨5小时=向前拨7小时
注意,这里发现的模式!
结合上面学到的同余的概念。事实上,
(-2)模12=10
10模12=10
-2和10一致。
(-4)模12=8
8模12=8
-4和8一致。
我们离成功越来越近了。要将负数替换为正数,我们只需应用同余数的两个定理:
反身性:
a=a(modm)
这个定理是非常明显的。
线性运算定理:
如果a=b(modm),c=d(modm)则:
(1)ac==bd(modm)
(2)a*c==b*d(modm)
如果你想看这个定理的证明,请看:
所以:
7=7(模12)
(-2)==10(模12)
7-2==7+10(模12)
现在我们求负数的正同余。但不是7-2=7+10,而是7-27+10(mod12),即计算结果的余数相等。
接下来我们回到二进制问题,看看:2-1=1的问题。
2-1=2+(-1)=[]原值+[]原值=[]逆值+[]逆值
让我们先进行这一步。-1的补码表示为。如果将[]视为原码,则[]原来=-126。这里去掉了符号位,认为是126。
发现以下规则:
(-1)模127=126
126模127=126
那是:
(-1)==126(模127)
2-1=2+126(模127)
2-1和2+126的余数结果是一样的!而这个余数就是我们期望的计算结果:2-1=1
所以一个数的补码实际上是这个数与膜的同余。而这个膜并不是我们的二元系统,而是能够表示的最大值!这就好比一个钟表,旋转一圈后总能在可表示的范围内找到正确的值!
而2+126显然相当于时钟转了一圈,而且由于符号位参与计算,正好与溢出的最高位形成正确的运算结果。
既然补码可以把减法变成加法,那么现在计算机使用的补码呢?为什么补码加1还能得到正确的结果呢?
2-1=2+(-1)=[]原+[]原=[]补数+[]补数
若将[]视为原码,去掉符号位,则为:
[]原始=127
事实上,基于反码的+1只相当于将膜的值增加:
(-1)模128=127
127模128=127
2-1==2+127(模128)
此时表盘相当于每128个刻度转一圈。因此,用补码表示的运算结果的最小值和最大值应为[-128,128]。
但由于0的特殊情况,没有办法表示128,所以补码的取值范围是[-128,127]
《大数据与人工智能传播》的宗旨
1.让大数据和人工智能的专业数学:概率数理统计、线性代数、决策论、优化论、博弈论等数学模型变得通俗易懂。
2.使大数据和人工智能专业涉及的数据结构和算法:分类、聚类、回归算法、概率等算法通俗易懂。
3.最新高科技趋势:数据采集中的智能传感器技术;医疗大数据智能决策分析;物联网智慧城市等
根据初学者的需求,目前主流的计算机语言有C语言、Java语言、Python语言、Scala函数式语言等。
根据读者的需要,有与人工智能相关的计算机科学与技术、电子技术、芯片技术等基础学科的通俗易懂的文章。