目录
一、计算机进制数
1) 十进制ND 十个数码:0~9、逢十进一
用于计算机输入输出,人机交互
(2)二进制NB 两个数码:0、1, 逢二进一
机器中的数据形式
(3)十六进制NH 十六个数码:0~9, A~F, 逢十六进一
用于表示二进制数
不同进位制数以下标或后缀区别,十进制数可不带下标
如:101=101D,101B=101B,101H=101H
十进制作为人类较为常用的进制,二进制则是计算机的数据形式,十六进制只跟有利于二进制表示组的形式
数制转化可学习:http://t.csdnimg.cn/MPhtr
可通过计算机进行数制转化
8位的微型计算机,从0000 0000B到1111 1111B,表示的无符号数值从0到255。
8位微型计算机中约定,符号“+”、“-”要用1位二进制数表示。最高位D7表示符号,其他7位表示数值。
为什么需要原码,反码,补码,只要原码不行吗?
因为在计算机中,二进制的运算对于正数之间不会出现什么问题,但是当出现负数的运算的时候就会有问题
原码: 符号位和数字实际值的结合。正数是数值本身,符号位为0;负数是数值本身,符号位为1。8位二进制数的表示范围是[-127, 127]。
反码: 正数是数值本身,符号位为0;负数的数值部分是正数表示的基础上对各个位取反,符号位为1。8位二进制数的表示范围是[-127, 127]。
补码: 正数是数值本身,符号位为0,负数的数值部分是在正数表示的基础上对各个位取反后加1,符号位为1。8位二进制数的表示范围是[-128, 127]。
正数的补码:等于原码,
负数的补码:反码 + 1。
8位二进制数表示无符号数和有符号数的范围
机器数 | 无符号数 | 原码 | 反码 | 补码 |
00000000 | 0 | +0 | +0 | +0 |
00000001 | 1 | +1 | +1 | +1 |
. | . | . | . | . |
01111111 | 127 | +127 | +127 | +127 |
10000000 | 128 | -0 | -127 | -128 |
10000001 | 129 | -1 | -126 | -127 |
. | . | . | . | . |
. | . | . | . | . |
11111110 | 254 | -126 | -1 | -2 |
11111111 | 255 | -127 | -0 | -1 |
溢出问题:
设[X]补=40H,[Y]补=41H,此时,X=+64,Y=+65,直接相加后结果为+129。
但如果用补码相加,[X]补+[Y]补=81H=1000 0001B=-127。
为什么会发生溢出现象?
关于溢出现象,它主要发生在数值超过一个数据类型能够存放的最大范围时。当使用补码表示数值时,如果两个数的和超出了该数据类型所能表示的范围,就会发生溢出。此外,符号位溢出会导致数的正负发生改变,而最高位的溢出则会导致最高位丢失。
例如,在8位二进制数中,最大的正数是127(0111 1111),最小的负数是-128(1000 0000)。如果我们尝试将127和1相加,结果应该是128,但8位二进制数无法表示128,因此会发生溢出,得到的结果是-128(1000 0000)。
因此,原码、反码和补码之所以会发生溢出现象,主要是因为数值的表示受到了数据类型的范围限制。当计算结果超出这个范围时,就会发生溢出,导致结果不准确。为了避免这种情况,程序员需要确保在编写代码时考虑到数据类型的范围,并采取适当的措施来处理可能的溢出情况。
如何判断是否溢出?
假设参加相加的两个数及结果都用补码,且将结果的进位位丢失,则有:
①两个正数相加得负数,有正溢出;
②两个负数相加得正数,有负溢出;
有三种情况下无溢出:
① 两个正数相加得正数;
② 两个负数相加得负数;
③ 一个正数与一个负数相加。
-
BCD码
什么是BCD码?
BCD码(Binary-Coded Decimal),用4位二进制数来表示1位十进制数中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。
BCD码也称二进码十进数,BCD码可分为有权码和无权码两类。其中,常见的有权BCD码有8421码、2421码、5421码,无权BCD码有余3码、余3循环码、格雷码,其中最常使用的为8421码,下面所述的都是基于8421码。
BCD码的优点
相对浮点数,采样BCD码可保持数据精度,又可以免去CPU计算浮点所消耗的时间。
相对浮点数,BCD码使用二进制编码表示十进制编码,使得数字可读性更好。如数字1234.56,使用BCD码表示为0x123456。
相对字符串,BCD编码效率更高,如数字1234.56,使用字符串需7个字节,采用BCD只需3字节。
BCD码应用
数据传输编码。
仪器设备显示。
-
ASCII码
什么是ASCII码?
ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。
ASCII码使用指定的7位或8位二进制数组合来表示128或256种可能的字符。标准ASCII码也叫基础ASCII码,使用7位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0到9、标点符号,以及在美式英语中使用的特殊控制字符。其中:
- 0~31及127(共33个)是控制字符或通信专用字符(如换行、回车、删除等)。
- 32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
- 65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
同时还要注意,ASCII码只包含英文字符,并不包含中文字符。如果要表示中文字符,需要使用其他编码系统,如GB2312、GBK、GB18030或Unicode等。
ASCII码应用
文本处理
网络通信
数据存储
-
计算机数据基本单位
一、bit(位)
位是最基本的概念,它的英文名字叫(bit),表示二进制位。
Bit:音译为“比特”,简称“b”,指二进制位,由0,1组成。
是计算机内存中最小的单位,也是最基本的单位
注意:位习惯上用小写的b表示,字节习惯上用大写的B表示。
二、Byte(字节)
Byte:译为“字节”,简称“B”,当记忆体容量过大时,Byte 这个单位就不够用,因此就有KB\MB\GB等出现。
是计算机系统中最小的存储单位
1 Byte 由 8 bits 组成
三、字
字(Word)代表计算机处理指令或数据的二进制数位数,是计算机进行数据存储和数据处理的运算的单位。
一个字通常由一个或多个(一般是字节的整数位)字节构成。
对于32位计算机与64位计算机,字的大小往往不同。
32位计算机:1字=32位=4字节,64位计算机:1字=64位=8字节
四、字长
字长是计算机的每个字所包含的位数,通俗的讲,字长就是字的长度,这里的长度用位来表示。
根据计算机的不同,字长有固定的和可变的两种。
固定字长:即字长在什么情况都是固定不变的;
可变字长:即在一定范围内,其长度是可变的。
单位换算
1字节(Byte)=8位(bit)
1 KB = 1024 B = 2^10 B
1 MB = 1024 KB = 2^20 B
1 GB = 1024 MB = 2^30 B
1 TB = 1024 GB = 2^40 B
ASCIIS码:
1个英文字母(不分大小写)= 1个字节的空间
1个中文汉字 = 2个字节的空间
1个ASCII码 = 一个字节