接初识C语言1
~
原码,补码,反码,移码
转换规则 | |||
码制 | 正数 | 负数 | 规则 |
原码 | 0100 0010 | 1110 0010 | 最高位为符号位,正数为0,负数为1 |
反码 | 0110 0010 | 1001 1101 | 原码基础上正数不变负数取反(符号位不变) |
补码 | 0110 0010 | 1001 1110 | 反码基础上负数+1(符号位不变) |
移码 | 1110 0010 | 0001 1110 | 补码基础上,符号位取反 |
+0,-0的表示 | |||
码制 | +0 | -0 | 0-0 |
原码 | 0000 0000 | 1000 0000 | 1000 0000 |
反码 | 0000 0000 | 1111 1111 | 1111 1111 |
补码 | 0000 0000 | 0000 0000 | 0000 0000 |
移码 | 1000 0000 | 1000 0000 | 0000 0000 |
注意:在补码和移码的表示中,0有唯一编码
-128的补码为1000 0000是人为规定
补码的补码就是原码(对于负数),正数的原,反,补相同
只要是整数,内存中存储的都是二进制的补码
表示范围 | ||
码制 | / | / |
原码 | -(2n-1-1)~+(2n-1-1) | -127~+127 |
反码 | -(2n-1-1)~+(2n-1-1) | -127~+127 |
补码 | -2n-1~+(2n-1-1) | -128~+127 |
移码 | -2n-1~+(2n-1-1) | -128~+127 |
++,--
- 关系操作符
- 逻辑操作符
- 条件操作符(三目操作符)
1为真执行2,2的结果为整个表达式的结果;
1为假执行3,3的结果为整个表达式的结果.
- 逗号表达式
10.下标引用,函数调用和结构成员
常见关键字(不要与变量名冲突)
常用关键字 |
auto:指定为自动变量,局部变量前都隐藏auto |
Break:跳出当前循环或switch结构。 |
case:开关语句中的分支标记。 |
char:字符型类型数据,属于整型数据的一种。 |
const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)。 |
continue:结束当前循环,开始下一轮循环。 |
default:开关语句中的“其他”分治,可选。 |
do:do循环结构,do 1 while(2);的执行顺序是1->2->1...循环,2为循环条件。 |
double:双精度浮点型数据,属于浮点数据的一种。 |
else:条件语句否定分支(与if连用)。 |
enum:枚举声明。 |
extern:指定对应变量为外部变量,即在另外的目标文件中定义,可以认为是约定由另外文件声明的对象的一个“引用“ |
float:单精度浮点型数据,属于浮点数据的一种。 |
for:for循环结构,for(1;2;3)4;的执行顺序为1->2->4->3->2...循环,其中2为循环条件。 |
goto:无条件跳转语句 |
if:条件语句。 |
int:整型数据,通常为编译器指定的机器字长。 |
long:修饰int,长整形数据,可省略被修饰的int。 |
register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数。 |
return:用在函数体中,返回特定值。 |
short:修饰int,短整型数据,可省略被修饰的int。 |
signed:修饰整型数据,有符号数据类型。 |
sizeof:得到特定类型或特定类型变量的大小。 static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。 |
struct:结构体声明。 |
switch:开关语句(多重分支语句)。 |
typedef:声明类型别名。 |
union:共用体声明。 |
unsigned:修饰整型数据,无符号数据类型。 |
void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果。 |
volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值。 |
while:while循环结构,while(1) 2;的执行顺序是1->2->1...循环,1为循环条件。 以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。 |
#define定义常量和宏
指针
如何产生地址:eg:32位(有32根地址线/数据线,(通电:正电1,负电0))
指针变量的大小
32位平台是4个字节;64位平台是8个字节