1/10 .c--进制 获取变量地址

模块化编程的概念:把功能相似的函数封装到不同的文件中。

好处:

1)用的时候,只需包含.h的文件,对外隐藏源文件的实现。

2)团队的分工协作

3)可以把细化若干个模块

实现:创建.c 的C语言源文件,.h(header)头文件(可做方法的声明)

1)方法的声明,但是不能实现方法

2)声明变量

3)声明结构体

7-5(进制)

7 6 5 4 3 2 1 0   //数位
1 0 0 0 1 1 1 1  //数码

//位权=数码值*基数^数位 (基数=几进制基数就是几)

/*
10->2
     除2取余,把10进制数除于2,然后取得余数序列,再倒序。
2->10
    所有 位的位权相加
    eg:0101=1*2^0+0*2^1+1*2^2+0*2^3
                 =5
2->16
    4合1法,整数部分从右向左4位结合成1位,小数部分从左向右4位结合1位,不足部分高位补0

16->2
    1拆4法 16进制的1位拆成二进制的4位
0x         5          2        0        a
          0100   0010   0000  1010
*/

7-6   源码、反码、补码

源码:一个数绝对值的二进制表示,如果是“+”,则最高位“0”;

     如果是“-”,则最高位是“1”;

数据在计算机内都是以反码的形式存储的

正数:源码=反码=补码

负数:反码=除符号位以外的各位取反 (1->0,  0->1)

   补码:反码+1

为什么要引入反码:

为了计算机能够做成减法,减法电路设计更简单。

7-7  位运算介绍

运算符:运算符用来连接操作数,组成有意义的式子

分类:算术  关系  逻辑  位运算

位运算:用于二进制之间的运算

    1)按位与& (判断一个整数的奇偶)获取一个数的最低位,让这个数与“1”进行按位与操作,若为0则是偶数  若位1则是奇数

    2)按位或 |

    3)取反 ~

    4)异或^

    5)>>右移

      6)<<左移

    

//按位与&
9&11  (同1则1,有0为0)
    00001001
&  00001011
-----------------
     00001001

//按位或 | (有1则1,同0为0)
9|11
    00001001
|   00001011
-----------------
    00001011

//~取反 (1变0,0变1)

//^异或 (相同为0,不同为1)

 左移<<位运算:各二进制位全部左移n位,高位丢弃,地位补0  (向左移动n位,相当于原数*2^n    左移可能改变一个数的正负性) 

 右移>>位运算:移出去的部分要舍弃,高位要补符号位 (右移不会改变一个数的正负性)一个数右移n位,值等于原值除于2^n,结果是整数部分

 

        00001000
<<      |
----------------------
       0000100000

 7-8 获取变量地址的方法

  %p  输出一个地址

  定义在函数中的变量我们称为局部变量。

  内存分配:先分配字节地址大的内存,再分配字节地址小的内存

  变量存储细节:

  低位字节存放在低地址

  高位字节存放在高地址

  变量首地址:变量在内存中占用的存储单元中地址最小的那个地址(取地址地址)

  

    

时间: 2024-10-25 12:28:37

1/10 .c--进制 获取变量地址的相关文章

C# 中2,10,16进制及其ASCII码之间转化

C# 中2,10,16进制及其ASCII码之间转化             --------//C#中各种字符类型的转化,使用于串口通信------------ //字符长度的理解            string s = "我是一个2兵";            int len = s.Length;//6个字符              byte[] sarr = System.Text.Encoding.Default.GetBytes(s);            len =

第一节 进制 常量 变量 运算符

计算机只能识别0.1代码. n进制转化为10进制: 当前位的数乘以基数的位数减1次方 10进制转化为n进制:连除倒去余的方法 一个字节代表8个二进制位 字节是计算机中最小的单位,我们平常说的内存2G就是说,有2G德字节. 常量:程序运行中值不发生变化的量 变量:程序运行中会发生变化的量 变量代表的是一个存储区域,存储区域内存储的内容就是变量的值. int a = 10; 变量类型  变量名   赋初值 变量名的命名规范: 由数字,字母,_组成,数字不能开头; 不能和系统关键字相同; 见名知意;

2 Java基础语法(keyword,标识符,凝视,常量,进制转换,变量,数据类型,数据类型转换)

1:keyword(掌握) (1)被Java语言赋予特定含义的单词 (2)特点: 所有小写. (3)注意事项: A:goto和const作为保留字存在. B:类似于Notepad++这种高级记事本会对keyword有特殊颜色标记 2:标识符(掌握) (1)就是给类,接口.方法,变量等起名字的字符序列 (2)组成规则: A:英文大写和小写字母 B:数字 C:$和_ (3)注意事项: A:不能以数字开头 B:不能是java中的keyword C:区分大写和小写 (4)常见的命名规则(见名知意) A:

_01JavaSE基础_关键字、标识符、常量、进制、变量、注释、数据类型、数据类型转换

1.关键字: 被java赋予特定含义的单词 特点: 全部小写 注意事项: goto和const作为保留字存在 2.标识符: 给类.接口.方法.变量等起名的字符序列 组成规则: a.英文大小写字母 b.数字字符(0-9) c.$和_ 注意事项: a.不能以数字开头 b.不能是java中的关键字 c.区分大小写 常见命名规则: a.包: 单级:全部小写 举例:liuyi,com 多级:全部小写,单词与单词之间用"."隔开 举例:cn.itcast,com.baidu b.类名及接口名: 每

2,8,10,16进制之间的转换

我们常用的进制是“十进制”,就是我们日常所说的逢十进一位,类比1+9=10(很简单) 类比十进制二进制i则是逢而进以也就是1+1=10 , 1+1+1=11,1+1+1+1=100, 1+1+1+1+1=101,1+1+1+1+1+1=110. 我们正常是用的数据为十进制,则十进制的数据转换二进制的数据时用短除 如例题所示,余数从下到上写则为二进制代码,读法就是从前往后念并不是十进制的读法,规律由例题可见当商为偶数对应右边的为0,而商为奇数时则对应的为1 十进制转八进制.十进制转16进制  法则

7.10 数据类型&amp;进制转化 Day4

---note--- _ _ _ _ _ _ _ _ 最高位为符号位 8位为0-7 基本数据类型: 整型:int short int long int 字符型:char ( 'a' 'b' 'c' '1' '2' ) 字符串:'ab' '123' 浮点型:float double 常量:定义一次,不可改变 #define NAME Dy  #define π 3.14 变量:定义一次,可改变多次     int a=1 ---note---

2进制,10进制,16进制,补码和移位

逢二进一,逢十进一,十六进制 10110101(2) = 128+32+16+4+1 = 181(10) b 5(16) = b*16+5 = 11*16+5 = 181(10) 2进制 int n = 45; System.out.println(Integer.toBinaryString(n)); 计算机的内部(Java)只有2进制数据, 在显示的时候编程语言提供API将2进制转换为10进制显示出来. 计算机只能处理2进制数据, 利用编程语言提供的算法支持了10进制 Java中用于支持2进

QT 16进制 ASII &nbsp; 10进制 转换

 //16进制字符串转字节数组     static QByteArray HexStrToByteArray(QString str)     {         QByteArray senddata;  //发送数据         int hexdata,lowhexdata;         int hexdatalen = 0;         int len = str.length();  //求出发送字符传唱度         senddata.resize(len/2); /

2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换

常量:#define const 字符串常量 1 8 10 16 进制转换 sizeof关键字 变量 int folat char 类型限定 const volatile register 输入输出 printf scanf 运算符 = + - *  / % += -= *= /= %= ++ -- , 运算符优先级 代码块{} 类型转换 1         C语言中的数据类型 1.1      常量 常量就是在程序中不可变化的量,常量是不可被赋值的. 1.1.1         #define