进制与内存分析
进制 1.【掌握】进制的基本概念
二进制、八进制、十进制、十六进制: 0b0000 1010/012/10/0x0a
2.进制的用法
%o:无符号八进制整数 %x:无符号十六进制 %d:有符号整型 %u:无符号整型 备注:二进制不可直接输出
3.进制的转换
二进制与十进制转换:0x 0000 1010 -> 10 二进制与八进制转换:0x 0000 1010 -> 000 001 010->012 二进制与十六进制转换:0x 0000 1010 -> 0x0a 八进制、十六进制和十进制互转(先转成二进制)
4.数据的取值范围
int :-2的31次方----2的31次方-1 unsigned int:0-2的32次方-1
5.类型修饰符
类型说明符可以累加,如果省略了基本数据类型,那么基本数据类型是int unsigned char:0 - 255 char:-128--127 浮点型没有无符号型; 有符号和无符号针对整型; long可以修饰整型,但不能修饰char 用long来修饰double,long double在64位编译器里占16字节
【掌握】位运算 1.位运算是什么? 直接对整数在内存中的二进制位进行操作的方法(只能操作整型) 2.有什么用? 直接通过操作二进制位来实现运算,比较高效 3.怎么用:按位计算 & :1假为假 | :1真为真 ^: 一个数^另一个数两次,结果不变; 整数的^和顺序无关; 一个整数^0为其本身 ~:按位取反 ~-2 = 3.取反再+1 <<:高位丢弃,包括符号位。低位补0 >>:右移n位,符号位不变,高位空缺补0 高位补0或者1不确定(编译器决定,clang补1)
计算机里,补码 == 反码 == 原码(不是指其表现形式,是指真实的值) 整数的补码,反码,原码的表现形式一样 负数的补码 = 反码+1,反码 = 原码符号位取反,其余取反 取反 = 原数的反值-1
转义字符 \n \t \' \'' \\
内存分析
file:///var/folders/t0/rmtcrw9j6wq924w545wht0dm0000gn/T/WizNote/aafd4525-ceb2-4b92-b499-de16bf4d5194.png 答案: 1.8位,16位 2.从高位取址,分配四个字节的内存空间,低位一个字节为0000 0001,其余高位的七个字节都是0 3.0b,0, ,0x 4.三位,四位 5.看是有符号型还是无符号 6.部分可以。long int ,short int,long double,long long int,char,unsigned char等 7.不能 8.如上 9.对的。输出\ 正确,转为'\'
10.a = 98,c = b 在char的范围内是可以用%c输出int数的 两个整数值的互换:(4种方法) 1.临时变量temp 2.a = a-b,差值 3.a = a^b,^两次一个数等于其本身 4.指针
编程题: 1. a = a^b; b = a^b; a = a^b; 2.判断i & 1 == 0
3.除符号位,整体右移30--0位再&1
|