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的编码。

    

 

posted @ 2020-07-10 11:21  芦苇芦苇  阅读(178)  评论(0)    收藏  举报