1. 什么叫进制?
• 一种计数方式,侧重于计数的时候,逢几进一
2. C语言中可以识别的进制数?
• ① 二进制 : 逢二进一,用0与1表示, 前缀为0b,无特定的输出占位符.
• ② 八进制 : 逢八进一,用0-7表示,前缀为0,输出占位符为%o.
• ③ 十进制 : 逢十进一,用0-9表示,默认为十进制,输出占位符为%d.
• ④ 十六进制: 逢十六进一,用0-9,a-f,前缀为0x,输出占位符为%x.
3. 进制的作用:用于计数.
4. 进制间的转换:
• 1.基本概念
o 数码:指的是这个数据的数字
o 数位:从0开始,从右到左,依次递增
o 基数:指的就是这个数的进制
o 位权:数码*(基数的数位次幂)
• 2. 进制间的转换
o 除K取余法
o 加权法
o 三合一法则-----一拆三法则
o 四合一法则-----一拆四法则
5. 内存的构造和变量所占的字节数
• 字节作为储存数据的最小单元,即一个字节有八个二进制位.
• 声明变量时,并不是去开辟空间,而是去申请一个指定字节数的连续空间.
•
6.sizeof数据所占用的字节数
• 作用:用来计算变量与常量占用的字节数
• 格式:
o sizeof(变量名);
o sizeof(数据类型);
o sizeof(常量);
• 特例: sizeof(char) = 1;
o sizeof(‘字符常量’) = 4;
• 注意事项
o 使用sizeof的时候,某些情况下,可以直接省略小括弧,但为了安全起见,最好不要省略.
7. 原码,反码与补码
• 任何数据,在内存中都是以补码的形式存储的.
• 原码:
o 最高位表示符号位,剩下的位数,是这个数的绝对值的二进制
• 反码:
o 正数的反码为本身
负数的反码就是符号位不变,其他二进制位取反
• 补码:
o 正数的补码就是其原码
o 负数的补码就是其反码的基础上+1.
8. 为什么数据要以补码的形式存在呢?(让计算机更方便的进行减法运算)
• 计算机只有加法运算,没有减法运算.
• 使用补码做运算效率更高
• 为了让计算机更方便的运算.
•
9 . 按位操作
• 位运算 : 指的是二进制数据的每一位来参与运算
o 位运算符的作用: 提高运算的效率
o 位运算的前提:这个数必须是一个二进制数
♣ 参与运算的二进制数据必须是以补码形式存在的.
♣ 位运算的结果也是二进制的补码形式的.
• 位运算符
o 按位与:& (遇0为0)
♣ 任何数按位与1,结果都是这个数的最低位--用于判断奇偶性
o 按位或:| (遇1为1)
o
o 按位异或: ^ (相同为0,不同为1)
♣ 两次异或同一个数,其值不变
o 按位取反: ~(遇0为1,遇1为0)
♣ 能够改变正负性
o 按位左移与按位右移
♣ 左移 ; << (低位补0,高位溢出就丢弃)
⎥ 左移有可能改变正负性
⎥ 将1个数左移,相当于将这个数乘以2的n次方
♣ 右移 : >>(低位溢出丢弃,高位补符号位)
⎥ 右移不改变正负性
⎥ 将一个数右移n位,相当于将这个数除以2的n次方
10. 变量的存储细节
• 1.同一变量所占的字节空间一定数连续的
o 声明变量,就会占用内存空间,程序运行时,系统就会自动的分配其他变量的内存空间,这时使得相邻变量间的地址不一定连续.
• 2.变量分配空间时,先定义的先从高地址向低地址分配,分配连续的指定字节数的空间
• 3.数据的存储是以二进制的补码形式存储的,存储的时候,低地址存低位,高地址存高位
11. int类型的修饰符
• 作用:指定int类型的变量在内存空间中占用的字节数
• short修饰符:占两个字节
o 输出格式: %hd
o 声明时可以省略int
• long修饰符 : 32 : 四个字节 64 : 占 8个字节
o 输出格式: %ld
o 声明时,可省略int
• long long 修饰符:占用8个字节
o 输出格式: %lld
o 声明时可以省略int
• unsigned修饰符:最高位不要用来表示符号位
o 最小值为0;
o 最大值为:2^16-1
o unsigned int ------ %u
o unsigned short ------- %hu
o unsigned long --------%lu
o unsigned long long ---- %llu
o
12. char类型变量的深入
• 任何数据在内存中都是以二进制的补码的形式存在
• 字符数据在内存中存储的是这个字符所对应的ASCII码的二进制
• char类型可以用%d输出,char类型变量的值
• char变量是有符号的,最高位为符号位
%c读取时,存储变量中的整数,然后再去ASCII中去查找这个整数对应的字符,在显示这个字符. |
|