c/c++ 二进制十六进制、字符与Ascii码表
二进制十六进制
- 二进制:每位只能用0,1表示;
- 二进制数相加
二进制到十进制的转换;
十六进制:每位只能用[0,15]来表示,其中A~F表示10,11,12,13,14,15
- 十六进制与二进制之间的转化:4位二进制表示一个16进制;
- 十六进制与10进制的转化;
计算机的数据存储
- Bit:每位计算机用bit来存储,可以存储0,1;
- Byte:每8个bit是一个Byte,字节,Byte是存储的最小单位;
- 字:2个字节来存储二进制数据,16个Bit的容量;
- 双字:4个字节来存储二进制数据32个Bit的容量;
- 四字:8个字节来存储二进制数据64个Bit的容量;
- 俩位16进制正好是1个字节,所以很多二进制编辑器都用16进制来表示; -
计算机的数据表示
- 无符号整数,所有的bit都用来表示数据的大小,不带符号,既不能表示负数;
-
有符号数:最高位的bit表示符号,剩下的bit表示数据;
正数:最高为用0,后面是数据部分;
负数:最高位是1,数据部分是正数的二进制取反以后再+1;-正数负数相加=0
- 小数
科学计数法的方式来存储小数;
4个字节为单精度小数,8个字节的为双精度小数;
字符
计算机是没有办法直接存储字符的,0,1;
计算机只能存放数据,所以必须要规定好数据到对应字符的映射;
数据到字符的映射,叫做编码–>将数据当做字符,然后使用这个编码对照表,翻译出来;;
- Ascii编码:英文字符对照编码 ->一个字节就能搞定;
- utf8编码:大部分的文字的编码;
- 其他编码;
不是说计算机不能直接表示字符吗?那为什么printf能看到字符?
- 把数据当成字符;
- 计算机图形学绘制出来的;