在VB中,用ASC函数计算汉字的机内码的问题。
来源:互联网 发布:星星堆满天 知乎 编辑:程序博客网 时间:2024/06/04 23:22
在"机内码"的百科一文中
http://baike.baidu.com/link?url=zwf0xM7Jb6f_HUsTcsly-HgJJuXbMMYv0o0BPioQx0igQ1B4uCc7ia49nai2WOwpEdltctP2a90wGtixpMD70a
有一段话如下:由上面我们知道,“保”字的国标码为3123H,前字节为00110001B,后字节为00100011B,
高位改1为10110001B和10100011B 即为B1A3H,因此,“保”字的机内码就是B1A3H。
也就是说汉字"保"的2进制为 1011000110100011 (采用GB2312编码方式),通过我的计算,
这个2进制”1011000110100011“若转为无符号的10进制则为45475,若转为有符号的10进制则为-12707,但通过
http://baike.baidu.com/link?url=zwf0xM7Jb6f_HUsTcsly-HgJJuXbMMYv0o0BPioQx0igQ1B4uCc7ia49nai2WOwpEdltctP2a90wGtixpMD70a
有一段话如下:由上面我们知道,“保”字的国标码为3123H,前字节为00110001B,后字节为00100011B,
高位改1为10110001B和10100011B 即为B1A3H,因此,“保”字的机内码就是B1A3H。
也就是说汉字"保"的2进制为 1011000110100011 (采用GB2312编码方式),通过我的计算,
这个2进制”1011000110100011“若转为无符号的10进制则为45475,若转为有符号的10进制则为-12707,但通过
asc("保")却得到的是-20061,为什么我计算的不是-20061 ?这个-20061是不是"保"的机内码的2进制对应的10进制?
----------------------------------------------------
我知道问题的原因啦。
负整数在计算机中是以补码形式储存的,补码是怎么样表示的呢,这里还要引入另一个概念——反码,所谓反码就是把负数的原码(负数的原码和和它的绝对值所对应的原码相同,简单的说就是绝对值相同的数原码相同)各个位按位取反,是1就换成0,是0就换成1,如-1的原码是00000001,和1的原码相同,那么-1的反码就是11111110,而补码就是在反码的基础上加1,即-1的补码是11111110+1=11111111,
所以对于”保“的2进制”1011000110100011“,如果想计算出对应的10进制,要先求出
"1011000110100011"的原码,由于”1011000110100011“加1得到的补码,那么我们再减1就是得到反码”1011000110100010",”1011000110100010"的原码是"1100111001011101",
"1100111001011101"的有符号的10进制=-((2的14次方)+(2的11次方)+(2的10次方)+(2的9次方)+(2的6次方)+(2的3次方)+(2的2次方)+(2的0次方))=-20061
搞定!!!
0 0
- 在VB中,用ASC函数计算汉字的机内码的问题。
- 关于对汉字长度的计算。用len 函数是错误的,应该用asc函数
- 求得汉字的机内码
- 汉字机内码的特点
- 汉字机内码的特点
- 得到汉字的内码
- 汉字的Unicode 内码
- 获取汉字的ASCII码,完成VB的Asc函数功能
- 用C++程序理解汉字的机内码表示
- 取汉字的机内码、UniCode码
- [2030 ]: 汉字统计(汉字机内码的特点)
- 汉字在计算机内部的内码占两个字节
- C#.NET中类似vb,asp中ASC和CHR的函数
- ASC转汉字,汉字转ASC[Native2Ascii的JavaScript实现]
- 汉字的国标码和机内码是怎么回事?
- 汉字的内码和外码
- 汉字机内码
- 汉字机内码
- 这个假期就一转眼
- ISDBT中CC的处理疑问
- Android程序对不同手机屏幕分辨率自适应的总结
- android开发笔记之常用开发命令
- 两个小球碰撞速度计算方法
- 在VB中,用ASC函数计算汉字的机内码的问题。
- php 下载保存文件保存到本地
- MyBatis之SQL配置详解
- XNA Shader编程教程2-漫反射光照
- 高德Android 定位SDK示例
- sphinx-release 2.1.4
- cocos2dx创建精灵的五种方法
- packet_pop.h
- 谷歌眼镜开发Mirror API之API使用案例