第二节课学习内容:
#include <stdio.h>
/*
1.进制的表示
2.原码,反码,补码
3.整型数据类型
4.小数数据类型
进制:进位计数制,10进制,7进制,24进制(小时),60进制(分和秒)
十进制:12345.6 == 110^4 + 210^3 + 310^2 + 410^1 + 510^0 + 610^-1 按权重展开相加
二进制(0~1,共两个符号,前面加一个0):10101 == 12^4 + 02^3 + 12^2 + 02^1 + 12^0 = 16+4+1 = 21
八进制(0~7,共八个符号): 123 == 18^2 + 28^1 + 38^0 == 64+16+3 == 83
十六进制(09,af/A~F, 一共是16个符号,前面加上0x/0X):1a1 == 116^2 + 1016^1 + 1*16^0 == 256+160+1 == 417
(下面的整数值全是无符号值,假设下面使用的都是一字节的整数)
第一个问题:其他进制怎么转化成10进制? 按权重展开相加
第二个问题:10进制怎么转化成其他进制?
10进制->2进制:1.基数相除,倒序取余 2.一直凑
100 -> 110 0100
123 -> 0111 1011
234 -> 1110 1010(不考虑正负)
10进制->8进制,16进制的方法(1.先将10进制值转换成2进制,2.再将2进制转换成我们所需要的8进制或16进制)
10进制->8进制(1.将其转换成2进制 2.从右向左,三三分组,左边不够的话补符号位)
100 -> 001 100 100 -> 0144(八进制)
10进制->16进制(1.将其转换成2进制 2.从右向左,四四分组,左边不够的话补符号位)
100 -> 0110 0100 -> 0x64(十六进制)
8进制如何转换16进制:先变成2进制,再转16进制
练习题:
10->8:
124->001 111 100 ->174
88 ->001 011 000 ->130
10->16:
111->0110 1111 -> 6f
66 ->0100 0010 -> 42