zoukankan      html  css  js  c++  java
  • 04、计算机基础--编码

    数值编码

    编码是用文字、符号或者数码来表示某种信息的过程。对数值来说,主要有两种编码方式:定点格式和浮点格式。(现实中真实的数值被称为真值。)

    定点整数

    小数点固定在数的最低位之后(最右侧),称其为定点整数。如果在最高位(最左侧)就是定点小数。

    定点整数不考虑正负,只表示0和正整数的话,就是无符号整数。

    N位二进制共有(2^N)个编码,表达真值:0 ~ (2^N - 1)

    如16位和32位二进制所能表示的无符号整数范围是:0 ~ (2^{16} - 1)和0 ~ (2^{32} - 1)

    通常机器数的最高位(最左侧)称为符号位,用0表示正数、1表示负数,这就是有符号整数。

    原码、反码、补码

    计算机中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同 。

    原码:是一种计算机对数字的二进制定点表示方法。原码不能直接参与运算,会出错。
    反码:正数的反码和原码相同,负数的反码是对正数逐位取反,符号位保持为1(负数)。
    补码:正整数的补码是其二进制表示,与原码相同。负数的补码是将除符号位外所有位取反加1.

    在原码中计算出错,是因为数学问题。

    例如:在数学上1 + (-1) = 0,将其换算成二进制原码的表现形式如下:

    00000001+10000001=10000010 转换10进制为-2,所以错误。

    所以,在计算机系统中,数值一律用补码来表示和存储。因为补码可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。

    在补码中,负数补码是将对应正数补码取反(即将0变为1,1变为0)再加1形成。

    例如:正整数105,用8位补码表示:

    ([105]_{补码}) = 01101001B

    负整数-105,用8位补码表示:

    ([-105]_{补码}) = ([01101001B]_{取反}) + 1 = 10010110B + 1 = 10010111B

    所以,补码就是用来解决负数在计算机中的表示问题。

    最后总结如下:

    对于正数来说:补码 = 原码 = 反码
    对于负数来说:补码 = 原码的反码 + 1

    字符的编码

    在计算机中,字符需要用若干位二进制码的组合表示,即字符的二进制编码。由于字节为计算机的基本存储单位,所以通常8个二进制为单位表达字符。

    一般在英文状态下一个字母或字符占用一个字节,一个汉字用两个字节表示。

    字节和字符

    字节和字符的转换根据语言和编码的不同,它们的转换关系也有区别:

    ASCII 码中,一个英文字母(不分大小写)为一个字节,一个中文汉字为两个字节。
    UTF-8 编码中,一个英文字为一个字节,一个中文为三个字节。
    Unicode 编码中,一个英文为一个字节,一个中文为两个字节。

    ASCII码

    ASCII码是一种非常常用的编码,标准ASCII码用7位二进制编码,故有128个。而计算机的存储单位为8位,所以表达ASCII码时最高D&位通常为0;通信时,D7位通常用作奇偶校验位。

    奇偶校验(Parity Check)是一种校验代码传输正确性的方法。

    其中标准ASCII码及其字符表如下所示:

    ASCII码表中的前32个和最后一个编码是不可显示的控制字符,用于表示某种操作。

    从20H开始(含20H)的95个编码是可显示和打印的字符,其中包括数码、英文字母、标点符号等。

    数字0~9的ASCII码为30H~39H,去掉高4位(或者说减去30H)就是BCD码。

    其中大写字母和小写字母之间相差20H(32),所以大小写字母非常容易互相转换。

    Unicode

    ASCII码表达了英文字符,但却无法表达世界上所有语言的字符.

    Unicode给每个字符提供了一个唯一的数字,不论是什么平台,不论是什么程序,不论是什么语言

    Unicode使用16位编码,能够对世界上所有语言的大多数字符进行编码,并提供了扩展能力。Unicode作为ASCII码的超集,保持了与其兼容。

    Unicode的前256个字符对应ASCII字符,16位编码的高字节为0、低字节等于ASCII码值。

    例如:大写字母A的ASCII码值是41H,用Unicode编

  • 相关阅读:
    JS中数组的sort()排序
    清除浮动方法
    浏览器兼容问题
    前端切图
    设置页面默认为繁体字
    7月计划
    css的层叠和继承
    Flex 布局教程:语法篇
    轮播图淡入淡出的js和jquery的效果
    接口调用async/await
  • 原文地址:https://www.cnblogs.com/pengjingya/p/15022475.html
Copyright © 2011-2022 走看看