计算机如何存储数据

1个字节8位,不够8位左边加0凑够8位。

计算机内存存储 0 和 1

计算机内存之中只存储0和1(二进制),通过硬件内存中的晶体管是否充电来存储0和1。不充电代表0,充电代表1。
纵列的8位一存,以横行的8列控制,当横行和纵列同时充满电的时候,横纵确定的那一位为1。
计算机刷新,不断对内存中的晶体管进行充电来保持计算机的正常运行。

存储数字

计算机之中以二进制的模式来存储数字。
所有非二进制的数字(如十六进制数、八进制数、十进制数)都会被转换成二进制存储。

存储正整数

存储正整数时,使用该正整数的原码(二进制数)。

存储负整数

存储负整数时,用其对应正数的补码表示。一个负数的补码等于该负数的相反数的反码加1。(如:-5的补码表示:-5对应正数5(00000101)→所有位取反(11111010)→加1(11111011))

存储小数

存储带小数的数字时,正数部分按照以上规则,小数部分以浮点数的形式存储。
十进制小数转二进制小数(1/10为底的小数转化为1/2为底的小数)

0.75(10) = 7 * 1/10 + 5 * 1/10^2
         = n1 * 1/2 +n2 * 1/4
         = 0.5 + 0.25
         = 1 * 1/2^1 + 1* 1/2^2
         = 0.11(2)
从右往左数

存储字符

美国国家标准学会制定ASCII(美国信息交换标准代码)(1个字节表示一个字符),将英文字符和常用符号编号表示。一个相应的字符对应一个特定的十进制数。存储某个字符,就存储该字母对应ASCII值的二进制值。
参考表链接

存储中文字符

中国自主制定GB 2312(中国国家标准简体中文字符集)字符集(2个字节表示一个字符),包括6763个汉字。
之后微软推出GBK字符集,扩展GB 2312字符集,可以存储生僻字/繁体字/日语和朝鲜语等。

存储所有字符

Unicode联盟将全球字符编号,编成Unicode字符集(4个字节表示一个字符)。
截止2016年6月,已经又128237个字符。

UTF-8存储Unicode

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。UTF-8用1到6个字节编码Unicode字符.
UTF-8编码规则:如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的字节数,其余各字节均以10开头。

你 -> 00000000 00000000 01001111 01100000   Unicode
你 -> 11100100 10111101 10100000         Utf-8
前3位111表示有3个字节,第2个字节去掉10,第3个字节去掉10。二进制01001111 01100000

现实问题

JavaScript使用UCS-2编码

后果

  • JavaScript无法表示\uFFFF之后的字符,某些情况下会出bug
  • JavaScript获取HTML某些字符的length时会多出1个长度。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 编程基础 1.硬件与软件:计算机的运行原理《编码》 2.最大的软件:操作系统 维基百科 3.自己写软件:数据结构...
    饥人谷_张乐阅读 658评论 0 2
  • 在计算机中所有的数据都被存储为一连串的二进制信息(0和1)。在这里我将浅谈这些二进制信息是如何表示计算机中的字符和...
    chiang24阅读 2,244评论 0 2
  • 编程基础 1,硬件与软件:计算机的运行原理(《编码》)2,最大的软件:操作系统(维基百科)3,自己写软件:数据结构...
    yytyff阅读 338评论 0 0
  • 黑压压一片,看不清周围人的脸。 声色俱全,自我突然褪去了表演。 偶尔往事翻涌,偶尔泪水肆虐。 想起自己是一个人来的...
    段童阅读 127评论 0 0
  • 佳人一首桃花谣, 惹得离人半世殇。 年年盼守芍药处, 夜夜相思念断肠。
    雨落秋风残阅读 283评论 0 1