Download presentation
Presentation is loading. Please wait.
Published byEleanor Park Modified 5年之前
1
复习:十进制与其他进制的转换 十进制转换为二进制: 短除法:除以2倒取余数 十进制转换为十六进制: 短除法:除以16倒取余数
二进制数a na n-1…a2a1转换为十进制: an * 2n an-1 * 2n … + a2 * a1 * 20 十六进制数a na n-1…a2a1转换为十进制: an * 16n an-1 * 16n … + a2 * a1 * 160
2
复习:二进制整数转换为十六进制 从右边开始每4位为一组划分,并将每组的4位二 进制转换为1位十六进制数字。
例: ( )2=(?)16 1 B 6 所以: B=1B6H
3
复习:十六进制转换为二进制 每1位十六进制数转换成4位二进制数,不足四位 的用0填充高位以足4位。 如:1A20H =?B 1A20H = B
4
字符的编码
5
动手编码 如果让你对“a、b、c、d”这四个字符在计算机中进行 编码,你会怎么编? 要求:用尽量少的二进制位数来编。 编码方式一: 编码
00 a 01 b 10 c 11 d 对4个字符编码,至少要用2个二进制位来表示一个字符.
6
数字信息的编码(位与信息) 结论:n个二进制位最多能表示2n种信息 两位中填二进制最多能填出多少种不同的值? 三位? 四位? 五位?
7
想一想: 如果用二进制给16个运动员编号,那么至少需 要几个二进制位为一个运动员编号?
如果计算机想表示32种颜色,至少需要几个二 进制位表示一种颜色? 如果计算机想表示48种声音,至少需要几个二 进制位表示一种声音?
8
ASCII 英文数字等字符的编码: ASCII码(美国信息交换标准码)
ASCII码采用7个二进制位来编码,一个ASCII码 在计算机中存储时占一个字节(Byte),字节的 最左位用“0”填充 思考:用7个位能编出多少个字符呢? 27=128
10
思考 一个汉字要占多少字节? 2^16=65535(FFFFH)
11
课堂实验 用UltraEdit文件夹下的Uedit32来观察“你的姓名”在计算机 中的内码(分别以十六进制和二进制填写表格)
字符 林 赛 雅 L S Y 内码(十六进制) C1D6 C8FC D1C5 4C 53 59 内码(二进制) 思考:如何判断有多少ASC码和中文?
12
神奇的输入法 按住ATL,在小键盘输入“97”,再放开ALT键 ,看看发生了什么? 同样的方法,输入“53435”,看看发生了什么 ?
13
汉字编码 计算机系统B 交换码 处理码 (机内码) 字形码 汉字显示 输入码 (外码) 译码 OS的汉字服务程序 计算机系统A
14
汉字编码—汉字的输入 向计算机输入汉字的两种方法: (1)自动识别方式:语音识别和汉字识别 (2)将汉字编码(外码)输入 音码:
搜狗输入、紫光输入、智能输入等。 形码: 五笔、郑码等。 音形码: 形音码:
15
汉字编码—处理码(机内码) 处理码:计算机内部用于信息处理的汉字代码,也称汉字机内码.
常用简体汉字采用GB2312码编码,一个GB2312码占两个字节 共收录6763个汉字,一级汉字3755个,二级汉字3008个,还有拉丁字母、希腊字母、日文平假名等字符。 GBK:是汉字编码标准之一,全称《汉字内码扩展规范》 GBK 向下与 GB2312 编码兼容。
16
GB 2312和区位码 GB 2312中对所收汉字进行了“分区”处理,每区含有94个汉字/符 号。这种表示方式也称为区位码。
01-09区,特殊符号 16-55区,一级汉字,按拼音排序 56-87区,二级汉字,按部首、笔画排序 10-15区,备用区 举例:“啊”字是GB2312之中的第一个汉字,区位码位1601。
17
汉字编码的奥秘 汉字的区位码,是一个四位的十进制数,每个国标 码或区位码都对应着一个唯一的汉字或符号,它的 前两位叫做区码,后两位叫做位码。
例子:谢=4827D( B , B ) 为了区分ASC码,汉字的区码和位码分别加上160( A0H)。 例子:谢=208,187( , ),转 为16进制:D0BB(53435D)
18
区码、位码分别加160 外码1 区位码 内码 外码2 外码3 编码的方法 真实的编码
19
基本练习 完成进制查看小练习。 编写“汉字内码查看” 程序(填空即可)。
20
参考代码 说明: Dim s1 As String, s2 As String s1 = Text1.Text
Text2.Text = (???)+ Asc(s1) Text3.Text = Hex(Text2.Text) a1 = Val("&H" & Mid(Text3.Text, 1, 2)) – (???) a2 = Val("&H" & Mid(Text3.Text, 3, 2)) – (???) Text4.Text = (???) 说明: 1)用Asc转换汉字,会得到负数,只要加上65536,即可得到真实的汉字内码(10进 制); 2)Hex可以将10进制数字转换为16进制的字符串; 3)Val("&HA1") ,可以得到“A1”的10进制数字161; 4)用trim函数可以去除字符前后的空格。
21
挑战任务 完成“2进制转16进制”的VB程序。 要求: 从右边开始每4位为一组划分,并将每组的4位二进制转换为1位十 六进制数字。
直接用ASCII转为“ABCD……”,不使用预设的字符串。
22
如何拆分二进制字符串? s1 = Val(Text1.Text) s2 = "" f = Len(s1) \ 4 For i = 1 To f t = _____________ s2 = get16(t) & s2 Next i If Len(s1) Mod 4 > 0 Then t = ______________ End If Text2.Text = s2 如果为: Len(s1)=10 拆分为:2,4,4 处理右边的4,4 调用自定义函数get16 处理余下的2个
23
ASC和CHR函数 If (s Mod 16) = 10 Then k = "A" If (s Mod 16) = 11 Then k = "B" If (s Mod 16) = 12 Then k = "C" If (s Mod 16) = 13 Then k = "D" If (s Mod 16) = 14 Then k = "E" If (s Mod 16) = 15 Then k = "F" 用ASCII完成
24
自定义函数get16: Function get16(t As String) As String Dim s As Integer For i = 1 To Len(t) s = s + ______________ Next If s > 9 Then get16 = ______ Else get16 = trim(str(s)) End If End Function “t”为四位内的2进制字符串。 按权展开相加,得到10进制数 利用asc码,用chr函数得到字母 Chr(65)=“A”
25
代码参考
Similar presentations