问:输入法为什么有全角半角之分

这要从发展史说起:
1. 二进制
计算机普遍遵循冯诺依曼结构体系,它规定了计算机内部以二进制为主要数制(这和电路有关),所以计算机只认识二进制的0或1。其它符号比如十进制的[2-9],字母[a-zA-Z],标点符号,中文等等是不认识的。那么,当我们说"a"的时候,它是怎么理解的呢?

2. 编码表
即然计算机只认识01符号,那我们就可以建立一套"映射系统",比如
a <--> 00000001
b <--> 00000010
c <--> 00000011
当我们说"a"的时候,计算机就理解为"00000001",即一个符号,用一串唯一的二进制表示,这套"映射系统"就称为编码表。

3. ASCII编码表
因为早期的计算机只在发达的欧美国家使用,所以这套"映射系统"是根据英文规则设计的,叫ASCII表,规定用8位长度的二进制表示一个字符,最多可以表示 2^8 = 256 个字符。ASCII表涵盖了英文字母,数字,和常用的英文符号,比如",.+-"等,
可普通汉字就有6万多个,很明显8位的ASCII编码方案满足不了中文系统的要求,比如中文 "啊"就无法用ASCII表示。

4. 中文编码表
由上我们知道,只要再设计一套长度更大的"映射系统"就可以解决问题了,比如
啊 = 00000000 00000001
哦 = 00000000 00000010
即使用16位二进制(两字节)表示一个汉字,最多可表示 2^16 = 65536 个。
早期中文系统设计的时候,是用GB2312标准,但这套标准有部分的汉字,符号,少数民族用语是没有映射过去的,比如在GB2312中就打不出“镕"字,所以往后就出了编码范围更大的编码表,如GBK,GB18030。这些编码表只有一个区别,就是能表示的汉字或符号范围越来越大了,但相应的,需要映射的二进制位数也越来越大了,即汉字可能需要用2-4位字节(16-32位二进制)表示,存储成本增加了。

5. 全角与半角
综上,我们知道
5.1 计算机只认识二进制01,所有的字形符号都是通过编码表(映射系统)翻译实现的
5.2 在英文系统的编码表里,有用一字节表示的标点符号,如英文逗号","
5.3 在中文系统的编码表里,有用N(1-4)字节表示的标点符号,如中文逗号",”

语义上我们统称为逗号,但计算机实际表现形式是不同的
英文逗号"," 在ASCII规则下是 00101100,一字节长,屏幕打印宽度是一个宽度
中文逗号"," 在GBK规则下是 10100011 10101100,两字节长,屏幕打印宽度是两个宽度

半角就是指 ASCII 编码表以内的标点符号,它们都是占一个字节,一个打印宽度的
全角就是指在ASCII编码表以外,如GBK,BIG5, Unicode等编码规则下的,多字节的标点符号,屏幕打印宽度通常是两个宽度,即一个汉字宽度。
简言之,ASCII以内的就叫半角符号,以外的就叫全角符号。

6. 回答楼主问题
为什么中文输入法会提供全角半角切换的功能,主要目的我猜是这样的
1. 中文编码表 (GB2312/GBK..) 向下兼容ASCII,但出现了符号冲突,比如有英文逗号,和中文逗号,当用户想输入逗号时,不知道该给出ASCII表内的逗号,还是中文编码表中的逗号。有了全角和半角,用户就可以自己选择,而不用切换成其它输入法了。
2. 中文对齐与美观
3. 存储成本,半角只占一字节,全角占多字节

输入法中的全角与半角相关推荐

  1. 输入法中的全角和半角

    遇到的问题 刚刚在使用输入法(微软拼音),不小心按了貌似是Shift+空格,然后打英文就变成了这样abcdefg,看着像有空格是吧,实际上我打的这个几个字母都是连续的 原因 经过了解才知道半角和全角的 ...

  2. 输入法中的全角和半角是什么,角又是什么

    角是日语的角,不是中文的角,这里的意思是四边形,日语叫四角形,也有道理,有四个角嘛. 全角就是这个四边形是完全的,也就是方的,中文的字正好是方的. 半角就不用多说了,就是半个四边形,普通的英文字母正好 ...

  3. 中文输入法中的全角和半角的区别

    摘自:http://blog.csdn.NET/kevinhg/article/details/8702462 在计算机屏幕上,一个汉字要占两个英文字符的位置,人们把一个英文字符所占的位置称为&quo ...

  4. 输入法中的全角与半角的区别

    最近在写论文的时候,由于参考文献的格式涉及到了全角与半角的问题,故来到了网上冲浪,希望可以找到二者到底有何区别.经过一番操作,基本弄清了二者的来源于区别,记录于下: 1.在计算机屏幕上,一个汉字要占两 ...

  5. 剔除半角字符和空格 java_去掉字符串中的全角,半角空格,回车,制表符

    package com.studyJava.stringStudy; import java.util.regex.Matcher; import java.util.regex.Pattern; p ...

  6. Windows10系统输入法切换使用全角和半角的方法

    转载自:http://www.xitongcheng.com/jiaocheng/win10_article_7180.html 大多数经常排版的用户都知道半角字符和全角字符的使用,一般来说输入英文时 ...

  7. Java中的全角和半角

    OYM中的任务中,有一项对文件内容的检查挺有意思的,就是要检查字符是否是全角的,例如"GY"(not"GY"),并且把这些字符改为半角的. 想起了在研发中心的一 ...

  8. java中去除全角和半角空格

    今天解析文件时,字符串的空格怎么也去除不掉,后来将该字符串转为字符数组,将每个字符的16进制打印出来,才发现空格是全角空格 @Test public void myTrim(){ String str ...

  9. 计算机中全半角转换是干什么的,全角半角切换快捷键(电脑全角和半角怎么切换)...

    搜狗输入法的全角半角切换键是:shift+空格键 (如当前在半角状态,按shift+空格键可以切换至全角:如当前在全角状态,按shift+空格键可以切换至半角) 半角与全角切换的意义 1.添加输入法不 ...

最新文章

  1. mybatis中mysql ON DUPLICATE KEY UPDATE写法
  2. nyoj 208 Supermarket(贪心)
  3. TensorFlow学习笔记(七)feeds操作
  4. c# Message const
  5. ux的重要性_UX中清晰的重要性
  6. 数据结构-线性表之带头结点的双向循环链表
  7. MySQL入门 (四) : JOIN 与UNION 查询
  8. wss3.0 对文档库的一些操作
  9. .ipynb文件怎么打开_Win10文件夹打开拒绝访问怎么解决?
  10. 通过Java实现一个企业人事管理系统
  11. BT5 autoscan genlist ADMsnmp snmpcheck使用
  12. 基、维数和坐标 过渡矩阵与坐标变换
  13. 基于SSH的医药管理系统
  14. 微信计步器怎么不计步_微信运动不显示步数解决方法
  15. 计算机频繁重启如何解决,电脑总是自动重启怎么回事(电脑经常自动重启的解决办法)...
  16. 搜狗输入法5.0_注意!月活超5亿的搜狗输入法向用户电脑植入病毒
  17. xp系统开机自检很久_XP开机卡在自检不能进入系统的解决办法
  18. 单阶段和两阶段目标检测
  19. 深度linux安装Qt后需要解决的问题
  20. The Fewest Coins POJ - 3260

热门文章

  1. flowable 查询流程发起人
  2. 微信创建小程序引入vantUI步骤
  3. SQL数据库关系运算
  4. Python——文本文件score.txt,该文件中存储了某个学期某班级中每个人所有课程的成绩。
  5. Hackrf One模拟GPS信号—手记
  6. python语法简洁清晰特色之一是强制用什么作为语句缩进_python语言特色
  7. 超3000亿美元市值被斩,特斯拉暴跌13.57%,美股“黑天鹅”引科技股“竞折腰”...
  8. codeforces867E865DBuy low Sell hig
  9. Windows Server 2016 禁止自动更新
  10. vue cube ui cube-tab-bar