为什么要使用原码 反码 补码.

为什么要使用原码 反码 补码. 前言: 随着学习计算机知识的加深,许多地方都遇到原码、反码、补码。很多关于计算机的书籍都介绍原码、反码、补码的表示方法,但是为什么要用到原码、反码、补码却没详细说。为什么要使用?它们的原理是什么呢?我搜索了许多资料,也查找了许多书籍,终于弄明白了这个问题,收集整理如下。 我们知道数值在计算机中表示形式为机器数,计算机只能识别0和1,使用的是二进制。而在日常生活中人们使用的是十进制,并且我们用的数值有正负之分。于是在计算机中就用一个数的最高位存放符号(0为正,1为负)。这就是机器数的原码了。 有了数值的表示方法就可以对数进行算术运算,但是很快就发现用带符号位的原码进行乘除运算时结果正确,而在加减运算的时候就出现了问题,如下: 假设字长为8bits (1) 10 - (1)10 = (1)10 + (-1)10 = (0)10 (0 0000001)原 + (1 0000001)原 = (1 0000010)原 = ( -2 )显然不正确。 ...

2011-07-03 · 1 min · 126 words · -

指数

指数 数学概念: 在乘方a^n中,其中的a叫做底数,n叫做指数,结果叫幂

2011-07-03 · 1 min · 3 words · -

阶码

阶码 在机器中表示一个浮点数时需要给出指数,这个指数用整数形式表示,这个整数叫做阶码,阶码指明了小数点在数据中的位置。 阶码: 对于任意一个二进制数n,可用N=S×2P表示,其中S为尾数,P为阶码,2为阶码的底,P、S都用二进制数表示,S表示N的全部有效数字,P指明小数点的位置。当阶码为固定值时,数的这种表示法称为定点表示,这样的数称为"定点数";当阶码为可变时,数的这种表示法称为浮点表示,这样的数称为"浮点数",这在前面已有介绍。

2011-07-03 · 1 min · 4 words · -

移码

移码 计算机中的移码 移码 (又叫增码) 是符号位取反的补码,一般用做浮点数的阶码,引入的目的是为了保证浮点数的机器零为全0。 ①移码的定义: 设由1位符号位和n位数值位组成的阶码,则 [X]移=2En + X -2n≤X ≤ 2n 例如: X=+1011 [X]移=11011 符号位"1"表示 正 号 X=-1011 [X]移=00101 符号位"0"表示 负 号 ②移码与补码的关系: [X]移与[X]补的关系是符号位互为相反数 (仅符号位不同) , 例如: X=+1011 [X]补=01011 [X]移=11011 X=-1011 [X]补=10101 [X]移=00101 ③移码运算应注意的问题: ◎对移码运算的结果需要加以修正,修正量为2En ,即对结果的符号位取反后才是移码形式的正确结果。 ◎移码表示中,0有唯一的编码——1000…00,当出现000…00时 (表示-2En) ,属于浮点数下溢。 浮点数的运算规则 浮点加减法的运算步骤 设两个浮点数 X=Mx※2Ex Y=My※2Ey 实现X±Y要用如下5步完成: ①对阶操作: 小阶向大阶看齐 ②进行尾数加减运算 ③规格化处理: 尾数进行运算的结果必须变成规格化的浮点数,对于双符号位的补码尾数来说,就必须是 001×××…×× 或110×××…××的形式 若不符合上述形式要进行左规或右规处理。 ④舍入操作: 在执行对阶或右规操作时常用"0"舍"1"入法将右移出去的尾数数值进行舍入,以确保精度。 ⑤判结果的正确性: 即检查阶码是否溢出 若阶码下溢 (移码表示是00…0) ,要置结果为机器0; 若阶码上溢 (超过了阶码表示的最大值) 置溢出标志。 例题: 假定X=0 .0110011*211,Y=0.1101101*2-10 (此处的数均为二进制) ?? 计算X+Y; 解: [X]浮: 0 1 010 1100110 ...

2011-07-03 · 1 min · 168 words · -

尾数

尾数 尾数: 在数学里,专指小数点后面的数字,现实生活中也指记账等号码的后几位,常用在手机号码、身份证号码等. 在计算机中, 对于任意一个二进制数n,可用N=S×2P表示,其中S为尾数,

2011-07-03 · 1 min · 5 words · -

定点数

定点数 定点数: 计算机中采用的一种数的表示方法。参与运算的数的小数点位置固定不变。 定点整数: 小数点位固定在最后一位之后称为定点整数。若机器字长为n+1位,数值表示为: X=X0X1X2…Xn,其中Xi={0,1},0≤i≤n 即(-1)^X0 * (X1*2^(n-1) + X2*2^(n-2) + … + Xn-1*2 + Xn) 数值范围是 -(2^n-1)≤X≤2^n-1 例如: 1111表示-7。 定点小数: 小数点固定在最高位之后称为定点小数。若机器字长为n+1位,数值表示为: X=X0.X1X2…Xn,其中Xi={0,1},0≤i≤n (这里X0不表示数字,只表示符号,若X0=0,则代表X=0.X1X2…Xn,X0=1,则代表-0.X1X2…Xn)。 即 (-1)^X0 * (X1*2^(-1)) + X2*2^(-2) + … + Xn-1*2^(-n+1) + Xn*2^(-n) 数值范围是 -(1-2^(-n))≤X≤1-2^(-n) 例如: 1111表示-0.875 (定点小数也被用在浮点数的尾数(Mantissa)部分)

2011-07-03 · 1 min · 42 words · -

整数

整数 整数 (Integer) : 像-2,-1,0,1,2这样的数称为整数。 (整数是表示物体个数的数,0表示有0个物体) 整数是人类能够掌握的最基本的数学工具。整数的全体构成整数集,整数集合是一个数环。在整数系中,自然数为0和正整数的统称,称0为零,称-1、-2、-3、…、-n、… (n为整数)为负整数。正整数、零与负整数构成整数系。 一个给定的整数n可以是负数 (n∈Z-) ,非负数 (n∈Z*) ,零 (n=0) 或正数 (n∈Z+) .

2011-07-03 · 1 min · 17 words · -

实数

实数 包括有理数和无理数。其中无理数就是无限不循环小数,有理数就包括整数和分数。数学上,实数直观地定义为和数轴上的点一一对应的数。本来实数仅称作数,后来引入了虚数概念,原本的数称作"实数"——意义是"实在的数"。

2011-07-03 · 1 min · 2 words · -

浮点数

浮点数 浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数 (即尾数) 乘以某个基数 (计算机中通常是2) 的整数次幂得到,这种表示方法类似于基数为10的科学记数法。 浮点计算: 是指浮点数参与的运算,这种运算通常伴随着因为无法精确表示而进行的近似或舍入。 一个浮点数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是指数。 浮点表示法: 把数的范围和精度分别表示的方法,相当于数的小数点的位置随比例因子的不同而在一定范围内可以自由浮动。 阶码: 浮点数编码中,表示小数点的位置的代码。 尾数: 浮点数据编码中,表示数据有效值的代码。 基数: 浮点数据编码中,对阶码所代表的指数值的数据,在计算机中是一个常数,不用代码表示。 定点数是小数点固定的数。在计算机中没有专门表示小数点的位,小数点的位置是约定默认的。一般固定在机器数的最低位之后,或是固定在符号位之后。前者称为定点纯整数,后者称为定点纯小数。 浮点数的表示范围: 最常用的32位规格化浮点数的表示范围是: 前提条件:阶码用移码表示,尾数用补码表示,每1位是符号位,阶码占8位,尾数占23位 可表示的最大正数:(1-2^-23)*2^127 最小正数:2^-129 最大负数:-2^-129 目前多数系统都按照IEEE-754标准来规定浮点数的存储格式。IEEE754规定,单精度浮点数用4字节存储,双精度浮点数用8字节存储,分为三个部分: 符号位、阶码和尾数。阶码即指数,尾数即有效小数位数。单精度格式阶码占8位,尾数占24位,符号位1位,双精度则为11位阶码,53位尾数和1位符号位, 显然差别就出来了。即使都是4字节存储的单精度浮点数,还有不使用IEEE754标准的,我记得字长32位的大型IBM系列机就是1位符号位,24位尾数,7位阶码,基数16,而不是2,与此标准不同。所以浮点数的表示范围依赖的因素较多较复杂,主要取决于表示一个浮点数所用的字节数和阶码的大小与长度。说法不一样,但应该都是有根据的。 最小负数:-2^127 规格化表示 java中的浮点数采用的事IEEE Standard 754 Floating Point Numbers标准,该标准的规范可以参考http://blog.csdn.net/treeroot/articles/94752.aspx. float占用4个字节,和int是一样,也就是32bit. 第1个bit表示符号,0表示正数,1表示负数,这个很好理解,不用多管. 第2-9个bit表示指数,一共8为(可以表示0-255),这里的底数是2,为了同时表示正数和负数,这里要减去127的偏移量.这样的话范围就是(-127到128),另外全0和全1作为特殊处理,所以直接表示-126到127. 剩下的23位表示小数部分,这里23位表示了24位的数字,因为有一个默认的前导1(只有二进制才有这个特性). 最后结果是:(-1)^(sign) * 1.f * 2^(exponent) 这里:sign是符号位,f是23bit的小数部分,exponent是指数部分,最后表示范围是(因为正负数是对称的,这里只关心正数) 2^(-126) ~~ 2(1-2^(-24)) * 2^127 这个还不是float的取值范围,因为标准中还规定了非规格化表示法,另外还有一些特殊规定. 非规格化表示: 当指数部分全0而且小数部分不全0时表示的是非规格化的浮点数,因为这里默认没有前导1,而是0. ...

2011-07-03 · 1 min · 87 words · -

有理数

有理数 有理数是整数和分数的统称,一切有理数都可以化成分数的形式。 有理数可分为整数和分数也可分为正有理数,0,负有理数。除了无限不循环小数以外的实数统称有理数。

2011-07-02 · 1 min · 3 words · -

IEEE754

IEEE754 IEEE754代码 标准表示法 为便于软件的移植,浮点数的表示格式应该有统一标准 (定义) 。1985年IEEE (Institute of Electrical and Electronics Engineers) 提出了IEEE754标准。该标准规定基数为2,阶码E用移码表示,尾数M用原码表示,根据原码的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的多一位。 类型 存储位数 偏移值 数符(s) 阶码(E) 尾数(M) 总位数 十六进制 十进制 短实数(Single,Float) 1位 8位 23位 32位 0x7FH +127 长实数(Double) 1位 11 位 52位 64位 0x3FFH +1023 临时实数(延伸双精确度,不常用) 1位 15位 64位 80位 0x3FFFH +16383

2011-07-02 · 1 min · 44 words · -

原码 反码 补码

原码 反码 补码 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 00000011 和 10000011 就是机器数。 真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数 10000011,其最高位1代表负,其真正数值是 -3 而不是形式值131 (10000011转换成十进制等于131) 。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 例: 0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1 在计算机内,定点数有3种表示法: 原码、反码和补码。 原码: 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制: [+1]原 = 0000 0001 [-1]原 = 1000 0001 第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是: [1111 1111 , 0111 1111] 即 [-127 , 127] ...

2011-06-26 · 2 min · 316 words · -

apache basic

apache basic apache path /etc/apache2/apache2.conf /etc/apache2/httpd.conf /var/log/apache2 linux apache 版本 linux 自动安装的 apache: sudo apachectl -v 启动/重启/停止apache服务器 Task: Start Apache 2 Server /启动apache服务 # /etc/init.d/apache2 start or $ sudo /etc/init.d/apache2 start Task: Restart Apache 2 Server /重启apache服务 # /etc/init.d/apache2 restart or $ sudo /etc/init.d/apache2 restart Task: Stop Apache 2 Server /停止apache服务 # /etc/init.d/apache2 stop or $ sudo /etc/init.d/apache2 stop

2011-05-29 · 1 min · 59 words · -

px pt em

px pt em px: pixel,像素,屏幕上显示的最小单位,用于网页设计; pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业; em: 即%,在CSS中,1em=100%,是一个比率,结合CSS继承关系使用。 http://www.douban.com/note/155032221/ http://blog.csdn.net/shizhu_1010/article/details/8089510 http://orgcent.com/android-textview-linespacingextra/

2011-05-28 · 1 min · 12 words · -

html textarea

html textarea TextArea <textarea rows="3" cols="30"> 这里是文本域中的文本 ... ... ... ... </textarea> Code: `` Setting TextArea Size The text area size is determined using the attributes “rows” and “cols”. You can change the size of text area by changing the values of rows and cols. Example Code: text area in status 2sdfsdfsdf

2011-05-28 · 1 min · 52 words · -

开机自动运行

开机自动运行 用户登录时, bash会在用户目录下按顺序查找以下三个文件,执行最先找到的一个. ~/.bash_profile ~/.bash_login ~/.profile 在上述文件中加入相应命令可以启动某些程序. 如: sh /***/tomcat/bin/startup.sh

2011-05-08 · 1 min · 10 words · -

gitosis install

gitosis install 用apt-get update 和 apt-get upgrade 更新当前系统. 安装OpenSSH Server: sudo apt-get install openssh-server 修改ssh服务端配置文件/etc/ssh/sshd_config Port 22 # 修改成你想要的登陆端口,如2222 PermitRootLogin no # 禁止root用户登陆 检查密钥的用户和权限是否正确,默认打开的 设置ssh在接收登录请求之前是否检查用户家目录和rhosts文件的权限和所有 权。这通常是必要的,因为新手经常会把自己的目录和文件设成任何人都有写权限。 StrictModes yes RSAAuthentication yes # 启用 RSA 认证 PubkeyAuthentication yes # 启用公钥认证 ServerKeyBits 1024 #将ServerKey强度改为1024比特 PermitEmptyPasswords no # 禁止空密码进行登录 #修改完成后,重启ssh服务: sudo /etc/init.d/ssh restart 4.安装git: sudo apt-get install git-core 5.安装gitosis (1)建一个临时文件夹,用来存放下载的gitosis文件,如 mkdir ~/tmp (2)安装gitosis cd ~/tmp git clone git://eagain.net/gitosis git://eagain.net/gitosis.git cd gitosis sudo python setup.py install ...

2011-05-04 · 1 min · 106 words · -

git diff

git diff git diff 查看尚未暂存的文件更新了哪些部分 git diff filename 查看尚未暂存的某个文件更新了哪些 git diff –cached 查看已经暂存起来的文件和上次提交的版本之间的差异 git diff –cached filename 查看已经暂存起来的某个文件和上次提交的版本之间的差异 git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9 b8e7b00c02b95b320f14b625663fdecf2d63e74c 查看某两个版本之间的差异 git diff ffd98b291e0caa6c33575c1ef465eae661ce40c9:filename b8e7b00c02b95b320f14b625663fdecf2d63e74c:filename 查看某两个版本的某个文件之间的差异 显示颜色 ~/.gitconfig 中加三行 [color] status = auto branch = auto ui = auto

2011-05-02 · 1 min · 41 words · -

touch

touch touch fileA 更改 fileA 的日期时间, 默认修改 access, modify, change 三个时间, 如果文件fileA不存在touch命令会在当前目录下创建一个空白文件 fileA.

2011-05-01 · 1 min · 13 words · -

shell 判断文件存在

shell 判断文件存在 myPath="/var/log/httpd/" myFile="/var /log/httpd/access.log" -d 参数判断$myPath是否存在 if [ ! -d “$myPath”]; then mkdir “$myPath” fi -f 参数判断$myFile是否存在 if [ ! -f “$myFile” ]; then touch “$myFile” fi “[” 后面要有空格 “]“前面要有空格 另外使用变量时,如: mv $myFile $… myFile 路径中不能有”~” @_@

2011-05-01 · 1 min · 38 words · -