C的杂乱笔记
学习于千锋教育,c全家桶。
1.c预编译 防止头文件重复包含
方法一。c/c++的标准制定 早
#ifndef 宏
#define 宏
头文件具体的内容
#endif
#ifndef __HELLO_H #define __HELLO_H #include "hello.h" #endif
方法二。#pragma once 编译器决定 晚
#pragma once放在头文件的最前方
#pragma once #include "hello.h"
总结
#pragma once 编译器决定 强调的文件名
#ifndef c/c++标准制定 强调的宏 而不是文件
2.原码,反码,补码

无符号数,正数,原码===反码===补码
负数 符号位为1,反码===原码(除符号位)取反,补码===反码加一
负数在计算机内存的是补码。
如果没有补码
例:
12-4=?
12+(-4)=
0000 1100
+ 1000 0100
--------------------
1001 0000 =-16
如果有补码
1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]补 + [1111 1111]补 = [0000 0000]补=[0000 0000]原
0000 1100 (补)
+ 1111 1100 (补)
--------------------
0000 1000 = 8
(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]补+ [1000 0001]补 = [1000 0000]补
4-5=?
0000 0100 (补)
+ 1111 1011 (补)
-------------------
1111 1111(补)=>1111 1110(反)=>1000 0001(原)=-1
计算机为了扩数据的表示范围:故意将-0看成-128 -128~127
总结
补码意义:将减法运算 变加法运算 同时统一了0的编码。

浙公网安备 33010602011771号