01-2带符号数的代码表示
二进制减法规则

二进制码
十进制
原码
0111 0110 0101
反码
0111 0110 0101
补码
0111 0110 0101
零 一
二 三 四 五 六
0 1
2 3 4 5 6
0 1
10 11 100 101 110
0 1
2 3 4 5 6
0 1
2 3 4 5 6
十 十一
十二 十三 十四 十五 十六
10 11
12 13 14 15 16
1010 1011
1100 1101 1110 1111 10000
A B
C D E F 10
格雷码到二进制码的转换:
1.两种数码最左边的数相同; 2.从左至右依次读格雷码,若某位为0 , 表 示与该位对应的二进制码与左边的码相同; 为1,表示与该位对应的二进 码与 左边的 码元不同。 例 1-2-2 将格雷码01110100转换成相应的 二进制码。 格雷码 0 1 1 1 0 1 0 0 二进制码 0 1 0 1 1 0 0 0 因此 (01110100)Gray=(01011000)2
i m
2. 二进制
符号0、1和小数点,且逢二进一,2为 基,2i称为第i位上的权。 (N)2=(bn-1bn-2…b1b0.b-1b-2…b-m)2 =bn-1×2n-1+bn-2×2n-2+…+b1 ×21 +b0×20 +b-1×2-1+b-2×2-2+…+b-m×2-m
1-2 计算机中数和字符的表示

概述
计算机中数和字符的表示
一、计算机中数和字符的存放
数据存放于存储器或寄存器中。 数据按字长一般分为:
8位(字节BYTE)
16位(字WORD) 32位(双字DWORD) 64位、128位、256位
数据在微机(INTEL)中存放的原则是
数 据 在 内 存 的 存 储 方 式
低地址放低字节,高地址放高字节
三、二进制数的运算
1、二进制数的算术运算
特点:按一定字长进行,运算结果超过字长则产生 进位、借位或自动丢失。
加法运算:11010011 + 10001100 1 01011111 进位 减法运算 :01110011 -11010010 1 10100001 借位
2、二进制数的逻辑运算 特点:按位进行,无进位或借位
• 1、次高位有进位,而最高位没有进位,这种情况对 应:正数+正数=负数 • 如:72+98= • 01001000 • +01100010 • 10101010 • 2、次高位没进位,而最高位有进位,这种情况对应 :负数+负数=正数 • 如:-83+(-80)= • 10101101 • + 10110000 • 1 01011101 • 丢失
[+33]补 = 0010 0001B
[+15]补 = 0000 1111B 0 0 1 0 0 0 0 1B [+33]补 + 0 0 0 0 1 1 1 1B [+15]补
符号位和数值位 一起进行运算
0 0 1 1 0 0 0 0 B [+48]补
[(+33)+(-15)]补= [+33]补+ [-15]补
例1.3
带符号数的表示

2.1.3数的定点表示与浮点表示
一、定点表示法
计算机一次所能计算的二进制数的加减 乘除的位数是有限制的,这就决定了一次 计算是由精度限制的。我们知道,用来存 储数的位数越长,数的精度越高,但是计 算机一次所能运算的长度有限,所以要达 到高精度的运算有以下几个途径: 1.让计算机一次可以做更长的四则运算。 2.用人工分解的办法编制程序,把一个很长 的二进制数的四则运算分解成很多步较短 的二进制运算组合。
(2)定点小数的补码表示[X]补=
X 0≤X<1
(mod 2)
2-|X| -1≤X<0
例: 若X=0.1011,则X补=X=0.1011(mod 2) 若X<0,则X补=M+X=M-|X|。因而负数的 补码等于模M减去该数的绝对值。 例:若X=-0.1011,则 X补=2 - 0.1011=1.0101
一、原码表示法━最高位表正负,其余是 数的绝对值的大小。注意我们在日常生活 中用笔写小数的时候,很轻松的在纸上点 上小数点,但是小数点在计算机中一般是 计算机默认在某一位上,用不着留下空间 专门来存放这个表示点的信号的。
1.定点小数 X0 X1 X2 X3 X4
….. ….. ….. …..
Xn
2.1.2带符号数的表示
2.1.2带符号数的表示
一、补码表示法
补码的补充说明: 就象我们前面所演示给大家看的是补码 的发现其实是为了消灭减法,大家可以用 这样一种思维去理解补码:补码其实就是 专门针对负数而发明出来的,正数根本不 需要什么补码,补码是一个减法的差,所 以求一个数的补码就是做一个减法。
2.1.2带符号数的表示
而四位二进制定点小数的最小表示数只能是
(完整版)vba常用代码大全,推荐文档

前言我们平时在工作表单元格的公式中常常使用函数,Excel自带的常用的函数多达300多个,功能强大,丰富多彩,但是在VBA中不能直接应用,必须在函数名前面加上对象,比如:Application.WorksheetFunction.Sum(arg1,arg2,arg3)。
而能在VBA中直接应用的函数也有几十个,下面将逐一详细介绍常用的40个VBA函数,以供大家学习参考。
第1.1例 ASC函数一、题目: 要求编写一段代码,运行后得到字符串”Excel”的首字母和”e”的ASCII值。
二、代码:Sub 示例_1_01()Dim myNum1%, myNum2%myNum1 = Asc("Excel") '返回69myNum2 = Asc("e") '返回101[a1] = "myNum1= ": [b1] = myNum1[a2] = "myNum2= ": [b2] = myNum2End Sub三、代码详解1、Sub 示例_1_01():宏程序的开始语句。
2、Dim myNum1%, myNum2%:变量myNum1和myNum2声明为整型变量。
也可以写为 Dim myNum1 As Integer 。
Integer 变量存储为 16位(2 个字节)的数值形式,其范围为 -32,768 到 32,767 之间。
Integer 的类型声明字符是百分比符号 (%)。
3、myNum1 = Asc("Excel"):把Asc函数的值赋给变量myNum1。
Asc函数返回一个 Integer,代表字符串中首字母的字符的ASCII代码。
语法Asc(string)必要的 string(字符串)参数可以是任何有效的字符串表达式。
如果 string 中没有包含任何字符,则会产生运行时错误。
4、myNum2 = Asc("e"):把Asc函数的值赋给变量myNum2。
国标码区位码等的区别

即:中文内码之一,代表中文,在广泛使用,影响所及,使用量渐见普及。
“国家标准信息交换用汉字编码”(GB2312-80标准),简称国标码。
国标码是指1980年中国制定的用于不同的具有处理功能的计算机系统间交换汉字信息时使用的编码。
国际码是二字节码, 用两个七位二进制数编码表示一个汉字。
目前国标码收入6763个汉字, 其中一级汉字(最常用)3755个, 二级汉字3008个, 另外还包括682个西文字符、图符。
例如“巧”字的代码是39H 41H, 在机内形式如下: 0 1 1 1 0 0 1 1 第一0 0 0 0 0 1第二字节在计算机内部,汉字编码和西文编码是共存的,如何区分它们是个很重要的问题,因为对不同的信息有不同的处理方式。
方法之一是对于二字节的国标码,将二个字节的最高位都置成“1”, 而码所用字节最高位保持“0”,然后由软件(或硬件)根据字节最高位来作出判断。
字符代码化是指用户从键盘上输入代表某个汉字的编码。
我们把采用不同的编码系统以代表汉字进行输入的方案(如数字码、拼音码和),称为汉字的输入法,、五笔字型码、拼音码、、拼音输入法等都是其中的具体代表。
汉字通过编码输入计算机后,在其后的处理过程中,不同阶段使用不同的代码,首先通过键盘管理程序将接收到的输入编码转换为0和1构成的机内码,实现计算机的存储、加工和传输处理。
同样,存储在计算机内部的机内码也必须经转换后才能恢复汉字的“本来面目”。
这种转换通常是由计算机的输入/输出设备来实现的, 有时还需要软件来参与这种转换过程。
这个阶段的汉字代码称为字形码,用以显示和打印输出。
区位码:1980年,为了使每一个汉字有一个全国统一的代码,我国颁布了第一个汉字编码的国家标准:GB2312-80《信息交换用汉字编码字符集》基本集,这个字符集是我国中文信息处理技术的发展基础,也是目前国内所有汉字系统的统一标准。
国标码是一个四位十六进制数,区位码是一个四位的十进制数,每个国标码或区位码都对应着一个唯一的汉字或符号,但因为十六进制数我们很少用到,所以大家常用的是区位码,它的前两位叫做区码,后两位叫做位码。
关于有符号数、无符号数和数据类型的总结

一、CPU只会根据输入信号进行逻辑运算,在硬件级别是没有有符号无符号的概念,运算结束会根据运算前的信号和输出信号来设置一些标志位,是不是有符号由写程序的人决定,标志位要看你把操作数当有符号还是无符号来选择,就像内存中的数据,你可以按照需要来解析,原始数据在那里,你要按什么数据格式来解析在于自己的选择,所以玩汇编的要做到心里有数,加减法只有一套指令,因为这一套指令同时适用于有符号和无符号。
下面这些指令:mul div movzx … 是处理无符号数的,而这些:imul idiv movsx … 是处理有符号的。
举例来说:内存里有一个字节x 为:0x EC ,一个字节y 为:0x 02 。
当把x,y当作有符号数来看时,x = -20 ,y = +2 。
当作无符号数看时,x = 236 ,y = 2 。
下面进行加运算,用add 指令,得到的结果为:0x EE ,那么这个0x EE 当作有符号数就是:-18 ,无符号数就是238 。
所以,add 一个指令可以适用有符号和无符号两种情况。
(呵呵,其实为什么要补码啊,就是为了这个呗,:-))乘法运算就不行了,必须用两套指令,有符号的情况下用imul 得到的结果是:0x FF D8 就是-40 。
无符号的情况下用mul ,得到:0x 01 D8 就是472 。
二、C又是可怕的,因为它把机器层面的所有的东西都反应了出来,像这个有没有符号的问题就是一例(java就不存在这个问题,因为它被设计成所有的整数都是有符号的)。
为了说明c的可怕特举一例:#include <stdio.h>#include <string.h>int main(){int x = 2;char * str = "abcd";int y = (x - strlen(str) ) / 2;printf("%d\n",y);}结果应该是-1 但是却得到:2147483647 。
数字电路-数制与编码

数码的个 数和计数 规律是进 位计数制 的两个决 定因素
一、 十进制数的表示 数码个数10: ⒈ 数码个数 :
0,1,2,3,4,5,6,7,8,9
计数规律: 计数规律
逢十进 1,借一当10
2.基与基数 2.基与基数
用来表示数的数码的集合称为基 用来表示数的数码的集合称为基(0—9), ) 称为基数 十进制为10)。 称为基数(十进制为 。 基数 十进制为 集合的大小
lg α j≥i lg β
取满足不等式的最小整数
)16 ,已知精度为±(0.1)410
例: (0.3021)10→(
解: α=10,β=16,i=4
lg10 j≥ 4 = 3.32 取 j=4 lg16
⑵按题意要求
例: (0.3021)10→( 解:
)2 ,要求精度 0.1% ∴取 j=10
1 1 0.1% = ≥ 10 1000 2
X ;0 ≤ X < 2n [ X ]补= 2n +1 + X ;-2n ≤ X < 0
例 2:
(321.4)8 = ( )10 =3×82+2×81+1×80 +4×8-1 =(209.5)10 192 16 1 0.5
基数乘除法( 10 → R )
分整数部分和小数部分分别转换。 ⒈整数的转换——基数除法 规则:除基取余, 规则:除基取余,商零为止 例1:(25) 10 = ( ) 2
例:已知 X1=1100 X2=1010 求 Y1= X1- X2 ; Y2= X2- X1
01100 +10101 100001 + 1 00010 01010 +10011 11101
三进制表示方法

三进制表示方法三进制是以3为基数的进位制,三进制数有0、1、2三个数码,逢三进一。
在计算机发展的早期,采用了一种偏置了的三进制(对称三进制),有-1<一般用T表示,特殊条件下用Z或z表示>、0、1三个数码,这种三进制逢+/-2进一。
定义三进制是以3为底数的进制,逢三进一、退一还三。
三进制采用0、1、2三个数码,从小数点往左依次是个位、三位、九位、二十七位…,小数点往右依次是三分位、九分位、二十七七分位…。
计算机发展的早期,有采用一种偏置的三进制——对称三进制,对称三进制采用-1、0、1三个数码。
对称三进制,能比二进制更自然的表示整数,绝对值比较小的整数位数比较少(省略第一非零位前面的零)。
对称三进制的逻辑通常应用于决策,比如投票有赞成、反对、弃权;交易有买进、卖出、观望,复式记账法体现了对称三进制的思维。
SQL数据库系统采用了三值逻辑,是对称三进制的应用。
也有人设计了三进制钞票面额系统。
下面有个例子采用对称三进制解决问题。
下面举一例:三进制数是以下问题的答案:允许在天平两端放置砝码,问N个砝码如何才能称出最多的整克物体?答案:1.一个砝码取1克,只能称1克。
2.二个砝码取1克,3克右盘3,左盘1。
称2克右盘3。
称3克右盘1,3。
称4克3.三个砝码取1克,3克,9克右盘9,左盘1,3。
称5克右盘9,左盘3。
称6克右盘9,1,左盘3。
称7克右盘9,左盘1。
称8克右盘9。
称9克右盘9,1。
称10克右盘9,3,左盘1。
称11克右盘9,3。
称12克右盘9,3,1。
称13克4.四个砝码取1克,3克,9克,27克。
............其中的1,3,9,27,81等都是三进制数的数位。
一些常见的十进制数换三进制表表示形式三进制一般有两种表示形式:一种是以0,1,2为基本字符的表示形式。
例如,365在这种表示形式中的写法是111112。
一种是以-1,0,1为基本字符的表现形式。
例如,365在这种表示形式中的写法是1TTTTTT(以T表示-1,负号置于1之上的象形)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
形式相近, 多了个0
1.2 带符号数的代码表示
真值与机器数 原码、反码和补码 机器数的加、减运算 十进制数的补数
1.2 带符号数的代码表示
数有正负问题,计算机中 如何表示带符号的数?
1.2.1 真值与机器数
真值:直接用“ +” “-” 符号表示的带符号数。 机器不认识,不能在机器中使用。
在没有溢出的情况下:
[X+Y]补 =[X]补+[Y]补。
符号位与数值位一起直接参加运算。 符号位产生的进位位为模可以丢掉。
二、定点补码减法
• 定点补码减法运算规则: [X-Y]补=[X]补+[-Y]补
从Y补求-Y补的法则是:对Y补带符号位 一起求补。
例:已知机器字长n=8,X=44, Y=53,求X-Y=?
1.2.6
十进制数的补数
带符号十进制数也有三种表示方 法,它们分别:符号-数值表示、 “对9的补数”及“对10的补数”。
符号-数值表示
习惯上用0000(等效于十进制数 0)表示正,而用1001(相当于 十进制数9)表示负。 +9 00001001 -9 10011001
十进制数“对10的补数”的减法运 算和二进制数的补码的减法运算相似, 可将减法转换成加法来实现。
例
完成下列数的真值到原码的转换。 X1 = + 1011011 [X1] 原 = 01011011 X2 = [X2]
原
- 1011011 = 11011011
N=+1101001 N=-1101001
N=+ 0 N=- 0
[N]原 = 0 1 1 0 1 0 0 1 [N]原 = 1 1 1 0 1 0 0 1
例 完成下列数的真值到补码的转换。 X1 = + 0 1011011 [X1]补=01011011 X2 = - 0 1011011 [X2]补=10100101
补码的表示范围:
N位纯整数: 2n-1 –1 -2n-1 N位纯小数: 1- 2-(n-1) - 1 均能表示 2n 个数
例:(以8位二进制数为例) [+ 4]补 = [+ 0000100]补 = 0 0000100
符号二进制编码遵循的原则
符号二进制代码化。 编码直观、方便编码。 方便处理(运算)。 N=1+N-1
1.2.2 原码、反码与补码
1. 原码 (Sign Magnitude Numbers)
原码表示法用“0”表示正号,用“1” 表示负号,有效值部分用二进制的绝对值 表示。
小数: X [X]原 = 1-X=1+|X| 0≥X≥-(1-2-(n-1) ) 1- 2-(n-1) ≥X≥0
……真值
机器只能认识二进制数,因此数的正与负
必须用二进制数来表示。用0和1两个代码表示 正和负,并规定一个数的最高位为符号位。从 而得到机器数。
机器数:将符号数值化后的二进制数。机器 能认识。 例如: +1010110 真值 -1010110 符号位 数值 0 1010110 机器数 1 1010110
解:[X]补=00101100,[Y]补=00110101, [-Y]补=11001011 [X]补 = 0 0 1 0 1 1 0 0 [-Y]补= 1 1 0 0 1 0 1 1 + 1 1 1 1 0 1 1 1
[X-Y]补=11110111, X-Y=(-0001001)2=(-9)10
例:已知机器字长n=8,X=-44, Y=-53,求X-Y=?
[+ N]反 = [+ N]原
[- N]反 = 1 [ N ]原
“ 0” 的反码有两种不同的形式。
[+ 0 ]反 = [0] 0 0 0 … 0
[- 0]反= [1] 1 1 1 … 1
二进制的补(two’s complements)
正数与负数的补码是完全不同的。 规则:[+ N]补 = [+ N]原 [- N]补 = [- N]反 + 1 (符号位参与计算)
[+0]反=00000000 ; [-0]反 =11111111
反码所表示的数值范围:(以8位为例) 正数: [+ N]反 = 0 0000000 ~ 0 1111111 即:0~ +127 负数: [-N]反 = 1 0000000 ~ 1 1111111 即:-127~ 0
总结:反码的特点
正数与负数的反码完全不同。
Y=53=32+16+4+1
100000+10000+100+1 =110101来自8=7+1 符号位为0
0110101 00110101
[Y]补=00110101
例:已知机器字长n=8,X=-44, Y=-53,求X+Y=?
解:[44]补=00101100, [53]补=00110101 [X]补=[-44]补=11010100, [Y]补=[-53]补=11001011, [X]补 = 1 1 0 1 0 1 0 0 + [Y]补 = 1 1 0 0 1 0 1 1 [X+Y]补 = 1 1 0 0 1 1 1 1 1 超出8位,舍弃模 值 X+Y=-01100001,X+Y=( -97)
整数:
X
[X]反= (2n -1)+X 0 ≥ X > -2n-1 X3=+1011011 , [X3] 反 =01011011 X4= -1011011 , [X4] 反 =10100100
1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 0 01 0 0
2n-1 > X ≥ 0
符 数值位 号 位
[- 4]补 = [- 0000100]补 = 1 1111011 + 1 = 1 1111100 [-4]反 [+ 0]补 = [+ 0000000]补 = 0 0000000 [- 0]补 = [- 0000000]补 = 1 1111111 + 1 = 0 0000000
1 将十进制数转换成二进制数。 D = - (1101)*2 -6 = - 0.001101 2 对二进制数求补。 D补=1.110011
[+ 0]原 = 0 0 0 0 0 0 0 0
[- 0]原 = 1 0 0 0 0 0 0 0
原码整数的表示范围:
[+0]原 =00000000 ; [-0]原 =10000000 最大值 : 2(n-1)-1 最小值:-(2-(n-1)-1) 表示数的个数: 2n - 1
例 若二进制的位数分别是8、16,求其表示 整数的最大值、最小值及表示数的个数。 8位: 127,-127,255 16位: 32767 , -32767 , 65535
例:已知机器字长n=8,X= 120, Y=10,求X+Y=?
解:[X]补=01111000,[Y]补=00001010, [X]补= 0 1 1 1 1 0 0 0 + [Y]补 = 0 0 0 0 1 0 1 0
1 0 0 0 0 0 1 0 [X+Y]补=10000010 X+Y的真值 ( -130)10 8位计算机数值表达范围:(-128 ~+127) 运算结果超出机器数值范围发生溢出错误。
例 完成下列数的真值到原码的转换 X1 = + 0.1011011 [X1]原=0.1011011 X2 = - 0.1011011 [X2]原=1.1011011
原码小数的表示范围:
[+0]原 =0.0000000 ; [-0]原 =1.0000000 最大值 : 1- 2-(n-1) 最小值:-(1- 2-(n-1)) 表示数的个数: 2n - 1
解:[X]补=11010100,[Y]补=11001011, [-Y]补=00110101 [X] = 1 1 0 1 0 1 0 0 + [-Y] = 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 1
补 补
超出8位(模值),舍弃 [X-Y]补=00001001,X-Y=+0001001 =(+9)
数的符号 正数:+(或省略) 负数:数的符号位:数的最高位 数的符号在r进制数中的表示 正数:0 负数:r-1 数的符号在二进制数中的表示 正数:0 负数:1
9 1=64+16+8+2+1
例 如,
( + 9 1)10 = (+ 1011011)2 ( - 9 1)10 =(- 1011011)2 ……真值
真值
1011 -1011 0.1011 -0.1011 0
原码
01011 11011 0.1011 1.1011 00000 10000
反码
01011 10100 0.1011 1.0100 00000 11111
补码
01011 10101 0.1011 1.0101 00000 补码零的 表示唯一 形式相同
小数: X [x]补= 2+X=2-|X| 0>X≥-1 1- 2-(n-1) ≥X≥0
例 完成下列数的真值到补码的转换。 X1 = + 0.1011011 [X1]补=01011011 X2 = - 0.1011011 [X2]补=10100101
整数: X [x]补= 2n+X=2n-|X| 0>X≥- 2(n-1) 2(n-1) -1 ≥X≥0
11 10 9 8 12 1 2
+8
3
-4
7 6
4
5
两种拨法: