一 进制spa
1. 什么是进制code
是一种计数的方式 数值的表示形式内存
2. 二进制编译
1> 特色: 只有0和1 逢2进1class
2> 书写格式: 0b或者0B开头二进制
3> %d 以带符号的十进制形式输出整数的格式符, %u 以不带符号的十进制形式输出整数的格式符数据
3. 八进制co
1> 特色: 0~7 逢八进一字符
2> 书写格式: 0开头位运算
3> %o 以不带符号的八进制形式输出整数的格式符
4. 十六进制
1> 特色: 0~F 逢十六进一
2> 书写格式: 0x或者0X开头
3> %x 以不带符号的十六进制形式输出整数的格式符
二 类型说明符
1. short和long
1> short和long能够提供不一样长度的整型数 也就是能够改变整型数的取值范围
2> 能够连续使用2个long 也就是long long, 通常来讲 long long的范围是不小于long的
3> 还有一点要明确的是: short int等价于short, long int等价于long, long long int等价于long long
2. signed和unsigned
1> 首先要明确的: signed int等价于signed, unsigned int等价于unsigned
2> signed和unsigned的区别就是它们的最高位是否要当作符号位 并不会像short和long那样改变数据的长度 即所占的字节数
signed: 表示有符号 也就是说最高位要当作符号位 因此包括正数, 负数和0 其实int的最高位原本就是符号位 已经包括了正负数和0了 所以signed和int是同样的 signed等价于signed int, 也等价于int
unsigned: 表示无符号 也就是说最高位并不当作符号位 因此不包括负数
三 位运算
1. 按位与 &
1> 功能: 只有对应的两个二进位均为1时 结果位才为1 不然为0
2> 举例: 好比9&5 其实就是1001&101=1 所以9&5=1
3> 规律: 二进制中 与1相&就保持原位 与0相&就为0
2. 按位或 |
1> 功能: 只要对应的二个二进位有一个为1时 结果位就为1 不然为0
2> 举例: 好比9|5 其实就是1001|101=1101 所以9|5=13
3. 按位异或 ^
1> 功能: 当对应的二进位相异(不相同)时 结果为1 不然为0
2> 举例: 好比9^5 其实就是1001^101=1100 所以9^5=12
3> 规律: 相同整数相^的结果是0 好比5^5=0 多个整数相^的结果跟顺序无关 好比5^6^7=5^7^6 所以得出结论: a^b^a = b
4. 按位取反 ~
对整数a的各二进位进行取反 符号位也取反(0变1 1变0)
5. 左移 <<
把整数a的各二进位所有左移n位 高位丢弃 低位补0 左移n位其实就是乘以2的n次方
因为左移是丢弃最高位 0补最低位 因此符号位也会被丢弃 左移出来的结果值可能会改变正负性
6. 右移 >>
把整数a的各二进位所有右移n位 保持符号位不变 右移n位其实就是除以2的n次方
为正数时 符号位为0 最高位补0
为负数时 符号位为1 最高位是补0或是补1 取决于编译系统的规定
四 char类型
1. 存储细节
字符在内存中存储的东西就是该字符所对应的ASCII码值
ASCII单字节表(双字节GBK\GB2312\GB18030\Unicode)
2. 注意: 单引号'' 只能扩住单字节的字符
3. 当作整型使用
在-128~127范围内 能够当作整数来用