计算机中信息表示

1、概述

现在的我们无时无刻不在接触计算机,即常说的电脑。计算机能干很多事,比如浏览网页、看视频、玩游戏、办公等,实现这些功能都需要计算机有信息存储和处理的能力。现代计算机的信息存储和处理都以二进制为基础,简单来说我们在电脑上看到的信息(比如文字、图片、音频、视频)都是以二进制表示的形式存储在计算机上或被计算机以二进制这种形式处理的。比如我们在计算机上的记事本中写日记,写入的是中文,在计算机中是以二进制编码(01010......)存储的,同时会给这些二进制编码指定一种解释方式,比如GB2312编码等,这样日记显示在屏幕上的才是中文。

为什么计算机选择二进制存储和处理信息?主要原因是二进制容易被电子元件表示、存储和传输,比如可以以电压高低表示0/1,或以磁场的方法顺时针和逆时针表示0/1等。我们日常使用十进制表示数字,原因是每个人都有十个手指或十个脚趾,使用十进制符合我们大部分人的认知,也方便日常使用。

1.1 计算机存储和表示的基本单位

计算机中存储和表示数据的基本单位是 位 (bit),和我们平常在十进制中所说的位概念相同,比如个位、十位、百位等。二进制中每位的取值范围是0或者1。

计算机中每8位代表一个字节(byte),即 1byte = 8bit,这是计算机中的常用存储大小单位。比字节大的还有KB、MB、GB、TB、PB、EB,其换算关系如下:

1KB = 1024B,1MB = 1024KB,1GB = 1024MB,1TB = 1024GB,1PB = 1024TB,1EB = 1024PB。’

需要注意两个问题:

1. B和b的区别,大写B代表字节,小写b代表比特位。比如1KB = 8Kb,常见的网速10Mbps,代表每秒10Mb,即大约1MB/s;

2. 标准换算关系是 1KB = 1024B,但在一般非正式计算中为了方便计算,使用1KB = 1000B,其他的依此类推。比如新买的电脑的磁盘或U盘,标称大小和实际大小不符合1024的换算关系,原因就是在工程制造中一般使用1000的换算比例,而计算机使用的1024的换算比例,所以会导致存在一定的偏差。

1.2 常用进制表示

从上面知道,计算机以二进制表示信息。比如:01100101,但我们人在书写和表达二进制编码时,就不是很方便了,因为二进制编码一般很长,且都是0或1,容易因为疏忽写错。为了解决这些问题,还有其他进制表示方法,用于辅助我们更好地认识和使用二进制。常见的进制有:二进制、八进制、十六进制,还有熟悉的十进制

八进制和十六进制,顾名思义,分别以0-7和0-9、A、B、C、D、E、F来表示。八进制以3个二进制位为一组,十六进制以4个二进制位为一组。示例如下:

二进制:00111101 
八进制:0(00)7(111)5(101)
十六进制:3(0011)D(1101) 

对于这几种进制表示方法,常见的问题是相互进行进制转换。一般都以二进制为基准来进行转换,比如十进制转换为十六进制,先把十进制转换为二进制,然后转换为十六进制。其他的依此类推。

对于十进制和二进制的转换,包含两种转换,即十进制 -> 二进制和二进制 -> 十进制。对于十进制到二进制,一般采用 除二取余。而二进制到十进制则简单很多,直接以2为基数,加以权重计算即可。示例如下:

十进制 –> 二进制 
150 / 2 = 75, 余 0 
75 / 2 = 37, 余 1 
37 / 2 = 18, 余 1 
18 / 2 = 9, 余 0 
9 / 2 = 4, 余 1 
4 / 2 = 2, 余 0 
2 / 2 = 1, 余 0 
1 / 2 = 0, 余 1 
==== 
150 = 10010110 
 
二进制 –> 十进制 10010110 = 0*2^0 + 1*2^1 + 1*2^2 + 0*2^3 + 1*2^4 + 0*2^5 + 0*2^6 + 1*2^7 = 150

其他的进制转换可以依此类推。常见的进制转换表如下所示:


十进制

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

二进制

0000

0001

0010

0011

0100

0101

0110

0111

1000

1001

1010

1011

1100

1101

1110

1111

八进制

0

1

2

3

4

5

6

7

10

11

12

13

14

15

16

17

十六进制

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

注意:

1. 需要熟记2的幂,即2的x次方,表示为2(x)

2(2)=4,2(3)=8,2(4)=16,2(5)=32,2(6)=64,2(7)=128,2(8)=256,2(9)=512,2(10)=1024

1.3 数据寻址

通过上面的描述,了解了计算机上信息的存储,那如何找到这些信息呢?计算机中的最小可寻址单位是字节,那数据的地址是所用字节中最小的地址。计算机将所有的存储设备抽象为一个字节数组,也就是对所有的程序来说,其看到的存储器是一个字节数组,该字节数组称为虚拟存储器

虚拟存储器的地址大小由计算机的 字长 这个属性决定,比如常见计算机字长 32位,那么其寻址范围为2的32次方字节即4GB。

对于跨越多个字节的数据,计算机有多种存储策略,常见的有:小端法、大端法、双端法。小端法即数据的低位存储在前,大端法即数据的高位存储在前,双端法即同时支持大端和小端存储。

1.4 位级别运算

常见位级别的运算有:按位布尔运算、移位运算等。

按位布尔运算如下表所示。


a

b

运算

结果

1001

0111

a | b

1111

1101

1011

a & b

1001

1010
 
~a

0101

移位运算分为:左移和右移。左移低位补0会数字变大,右移会使数字变小。右移分为逻辑右移和算术右移,逻辑右移即高位补0,算术右移即高位补最高有效位值。示例如下:


x

操作

结果

01011010

x<<4

10100000

01010011

x>>4(逻辑右移)

00000101

10100101

x>>4(算术右移)

11111010

注意:

1. Java中 x >> k 为算术右移k位,x >>> k 为逻辑右移k位。

1.5 字符表示

对于字符串,每个字符都由一个编码表示。比如常见的有:ASCII(American Stardard Code For Information Interchange),Unicode,GB2312 等。

ASCII 使用一个字节来表示英文字符,不适合表示其他的中文、俄文等。所以提出了Unicode,使用4个字节编码字符,对于常见的编码,使用和ASCII一样的编码。

注意:Java中的字符编码使用Unicode

原文地址:https://www.cnblogs.com/glsy/p/11827322.html

时间: 2024-08-29 04:41:33

计算机中信息表示的相关文章

简单理解信息在计算机中的表示

信息是一个很宽泛的概念,说大了是与物质和能量鼎立的自然界三要素,这里仅仅涉及到计算机中的信息: 众所周知,对计算机自身而言,所有信息都是0/1二进制形式: 作为JavaEE/Android程序员,在开发过程中有时会遇到字符编码,进制转换这样的基础问题,虽然依靠经验或者网络搜索能很快实现功能,但每次都感觉对基本概念理解得不是很透彻,不如把现有的理解记录下来,以备后用: 信息在计算机中大致分为控制信息和数据信息: 控制信息是计算机系统内部运转用到的控制命令,例如读写命令,中断信号,片选信号,复位信号

JAVA 读取计算机中相关信息

java读取 计算机 cup号 读取版本 显卡 ................. package com.swt.common.util; import java.io.BufferedReader; import java.io.File; import java.io.FileWriter; import java.io.InputStreamReader; import java.io.LineNumberReader; /** * 获取硬件信息 * @author luoxf * */

计算机中的信息=位+上下文(转)

计算机中的信息=位+上下文.进一步,信息可以分为两大类:一类是数据,一类是指令.指令用来表明操作的动作,数据用来表明被操作的对象,这两者同时也构成了一个完整的程序. 对于数据而言,我们先来谈整数的表示和运算.无符号编码表示无符号数,补码表示有符号数,相信大家对这两种编码应该是非常熟悉的(无符号编码没有符号位,补码的最高位表示符号位). 在整数的运算方面一共有两种,一种是算术运算,一种是逻辑运算.算术运算就指平常的加减乘数,当然要注意溢出.符号位等各种情况(这个讲起来的话太多了,而且我也担心自己讲

session的官方定义是:Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。 说白了session就是一种可以维持服务器端的数据存储技术。session主要有以下的这些特点: 1. session保存的位置是在服务器端 2. session一般来说是要配合cookie使用,如果是浏览器禁用了cookie功

session的官方定义是:Session:在计算机中,尤其是在网络应用中,称为"会话控制".Session 对象存储特定用户会话所需的属性及配置信息. 说白了session就是一种可以维持服务器端的数据存储技术.session主要有以下的这些特点: 1. session保存的位置是在服务器端 2. session一般来说是要配合cookie使用,如果是浏览器禁用了cookie功能,也就只能够使用URL重写来实现session存储的功能 3. 单纯的使用session来维持用户状态的话

安装apache服务出错,无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题

错误信息:无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题 错误场景:在使用["D:\Program Files\httpd-2.4.20-x64-vc14-r2\Apache24\bin\httpd.exe" -k install -n apache]命令,在DOS命令行窗口下安装 apache服务时报错. 错误分析: 解决办法:下载vc++2015 并安装 链接如下:https://www.microsoft.com/zh-cn/do

计算机中的编码问题

计算机中的编码问题 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节.比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295. 一.目前常用的编码 ASCII编码:由于计算机是美国人发明的,因此,最早只有127个字母被编码到计算机里,也就是大小

计算机中的浮点数(IEEE754)

IEEE读作[a?-'tr?p(?)l-i:],电气和电子工程师协会.这个是一个包括所有电子和计算机技术的专业团体,制定标准是其工作之一. IEEE浮点数算术标准(IEEE 754)是最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用. 整数运算和浮点数运算会有不同的数学属性是因为它们处理数字表示有限性的方式不同——整数的表示算然只能编码一个相对较小的数字范围,但是这种表示是精确的:而浮点数虽然可以编码一个较大的数值范围,但是这种表示只是近似的. IEEE规定的浮点数编码会将一个浮点数转

聊聊计算机中的编码(Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等)

作为一个程序员,一个中国的程序员,想来“乱码”问题基本上都遇到过,也为之头疼过.出现乱码问题的根本原因是编码与解码使用了不同而且不兼容的“标准”,在国内一般出现在中文的编解码过程中. 我们平时常见的编码有Unicode,GBK,ASCII,utf8,utf16,ISO8859-1等,弄清这些编码之间的关系,就不难理解“乱码”出现的原因以及解决办法. 所谓字符集编码其实就是将字符(包括英文字符.特殊符号,控制字符,数字,汉子等)与计算机中的一个数字(二进制存储)一一对应起来,用这个数字来表示该字符

计算机中的整数(原码、反码、补码)

系统中所有的信息——包括磁盘文件.存储器中的程序存储器中存放的用户数据以及网上落上传送的数据,都是由一串位表示的.区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文.比如,在不同的上下文中,一个同样的字节序列可能表示一个整数.浮点数.字符串或者机器指令. 计算机中的整数可以分为无符号整数和有符号整数两种类型.无符号整数不存在正负之分,在计算机中以其二进制真值的形式存放.而有符号整数由于有正负数的区分,表示相对复杂. 计算机中的符号数有三种表示方法,即原码.反码和补码.三种表示方法均有符号