首页 > 其他分享 >24.07.31

24.07.31

时间:2024-07-31 18:26:57浏览次数:16  
标签:10 字节 int 24.07 运算符 -- 31 表达式

day2

1.基础知识

1.1 计算机结构

在这里插入图片描述

1.2 什么是程序

广义上讲,为了实现一个特定的目标而预先设计的一组可操作的工作步骤,称之为一个程序。

    
程序就是系统可以识别的一组有序的指令。存储在磁盘上,被加载到内存中执行。

1.3 数据

定义:送入计算机的数字,字母,符号等信息必须转换成0、1组合的数据形式才能被计算机接收、存储并进行运算
    
    
能够进行算术运算得到明确数值概念的信息成为计算机数值数据,其余的信息成为非数值数据
   
1.3.1 数值数据
进制
 
十进制   0~9
八进制   0~7                                0开头
二进制   0,1  
十六进制  0~9 a、b、c、d、e、f                0x开头
    
 
    
 
/*****************进制之间的转换********************/    
其他进制转十进制
    (1)位权表达式

    
十进制转二进制:
    171          
    (1)短除法
    (2)凑方法

    
八进制转二进制:一位换三位
   074    
   111 100
    
十六进制转二进制:一为换四位
   0xaf
   1010  1111 

    
二进制转八进制:三位换一位
   0111 1010
   001  111   010
     1    7      2
    0172
    
二进制转十六进制:四位换一位  
    0111 1010
    7      a
    0x7a   
1.3.2非数值数据
字符数据  ASCII
    
'a'  'b'  '1'    
1.4C语言的框架
#include <stdio.h>
int  main()
{
	   	


		return 0;
}

1.5词法符号

1.5.1关键字
关键字是由系统预定义的词法符号,有特定的含义,不允许用户重新定义
    
    
auto  break  case  char  const    continue      default  do   double   else    enum     extern             float        for        goto    if          int       long     register        return    short            signed             sizeof          static           struct    switch          typedef           union          unsigned      void    volatile        while    
    
    
所有关键字均为小写    
1.5.2标识符
标识符是由程序员按照命名规则自行定义的词法符号,用于定义宏名、变量名、函数名和自定义类型名等
    
C语言的命名规则如下:
    1) 标识符由一个或多个字母、数字或下划线组成
    2)标识符的第一个字符必须是字母或下划线
    3)标识符不能与任何关键字相同

大小写敏感;  ab  Ab  aB AB
命名有一定含义,便于记忆,增加可读性    
1.5.3分隔符
分隔符是用来分隔其他的词法符号,主要包括: 
             空格符、制表符(tab)、换行符号、注释
     通过对分隔符的恰当运用,使得代码的外观格式更为清晰易读,还可以帮助分析程序中的语法错误

                 
                 
//  注释一行
                 
/* 
	代码块              ---- 注释一段代码

*/            
1.5.4运算符
算术运算符
 + - * /  %       
逻辑运算符
&&  ||  !
    
 
    
逻辑与  &&: 全真为真, 有假就假
  表达式1  &&  表达式2  
    真           真             真   
    真           假             假  
    假           真             假
    假           假             假
    
    
   
逻辑或 ||:有真就真,全假为假
     表达式1  ||  表达式2 
      真           真           真
      真           假           真
      假           真           真 
      假           假           假
    
    
逻辑非
    
    !(表达式)
    
    若果表达式为真,整体为假
              假       真
    
    
短路法则:
    	逻辑与, 如果第一个表达式为假,那么后一个表达式不需要判断(也不会执行表达式),整体为假
        逻辑或, 如果第一个表达式为真,那么后一个表达式不需要判断(也不会执行表达式),整体为真
    
关系运算符
>  <  <=  >=  ==  !=
    
真:1(非零为真)   
假:0       
    
关系运算符的结果 只有 0、1    
位运算符
  &  |  ~  >>   <<
        
位运算是二进制位的运算      

C语言存的都是补码   正数:三码合一    负数:有区别
把最高位作为符号位   0:正数   1:负数
      
      

7
0000 0111
      
-7
1000 0111      
      
      
原码:最高位符号位,其余位数值位    
7
0000 0111
      
-7
1000 0111       
       
反码:符号位不变,其余位取反
7
0000 0111
      
-7
1111 1000      
      
补码 :反码基础上 + 1      
7
0000 0111
      
-7
1111 1001        
      
       
补码转原码:
      (1)逆推法
      (2)补码的补码就是原码 
      
      
位与&:
   	1&1=1  1&0=0  0&1=0  0&0=0

    5 & 3 = 1
    -5 & 3 = 3   
     
位或|:
     1|1=1  1|0=1  0|1=1   0|0=0  
 
      
位取反~:
     ~1 = 0    ~0 = 1
         
         
         
>>n 右移n位    :右边移出去,左补符号位         
正数:
10 >> 2        
0000 1010    0000 0010     
         
负数: 
-13
1000 1101 
1111 0010
1111 0011  >> 3    
1111 1110
1000 0001
1000 0010    
       
15   >>  4
-23  >>  2    
         
<<n 左移n位 :  左边移动出去,右边补0
    
正数:    
0000 0111  << 2    
0001 1100
    
负数:
-1
1000 0001
1111 1110
1111 1111   << 3
1111 1000    
1000 0111
1000 1000   
    
    
    
作用:
        
char a = 10;     0000 1010  
a = 8;           0000 1000

    
***************************************清零***************************************
  0000 1010   第1位清零          ? &  0 = 0
& 1111 1101                     ? &  1 = ?
    
  1         0000 0001  
  1 << 1    0000 0010
  ~         1111 1101 
    
 char a = 10; 
 a = a &  (~(1 << 1))
     
     
  & 0000 1010   第1位和第3位清零    
    1111 0101 
     
 a = a & (~(1 << 1  |  1 << 3))    
 a &= (~(1 << 1  |  1 << 3));  


***************************************置位(置1)***************************************
char a = 10;     0000 1010    把第 5 位置1          ? | 0 =  ?   
                                                   ? | 1 = 1
   0000 1010    
 | 0010 0000
    
  a = a | (1 << 5);


char a = 10;     0000 1010    把第 5、7 位置1 
    
a = a | (1 << 5 | 1 << 7) 
    
    
   1111 1010    5~7 置成 101 
  &1000 1111
   1000 1010
  |0101 0000
   1101 1010    
赋值运算符
=  把等号右边的值,赋值给等号的左边   

注意:等号的左值不能为一个常量    
    
    
复合赋值
    +=     a+=10   -->  a = a + 10;
    -=
    *=
    /=

eg:
	int a = 2;
    a += 20 *20;    // a = a + (20 * 20);		
递增递减运算符
++  --
    
(1)++ -- 独立成一句
    
    前++ 等价与 后++
    前--       后--

(2)在运算式中    
    
   前++ 前--: 先进行自加(自减)运算,运算后的结果作为整体的值
   后++ 后--: 先取值作为整体的值,再进行自加(自减)运算
地址运算符
&  取地址
逗号运算符
,
    
int a;
a=10,20,30;   每一个式子都会执行
    
    
最后一个式子的结果作为整体的值
    
a = (a + 10, 60, 100 + 30);   



eg:
	int a;
    int x = 10, y = 20; 
    a = (x = 20, y + 1 , x + y); 

    printf("%d\n", a); 
sizeof运算符
用于计算数据类型的大小    --- 结果是数据类型的大小  单位为字节
    
一个字节  --- 8位二进制数  
1024b = 1kb
1024kb = 1mb 
1024mb = 1gb                    
1024gb = 1Tb       
    
1GB =  2^3 * 2^10   * 2^10  * 2^10  = 2^33 
    
    
sizeof(int)
三目运算符
表达式1 ? 表达式2 : 表达式3	

如果表达式1为真,则执行表达2,
           假,        3 


    
三目运算符用于简单的判断,复杂的用if else   switch case    
1.5.5标点符号
C语言中的标点符号有逗号、分号、冒号、花括号、圆括号。

1.6 打印调试

1.6.1 宏定义
#define  宏名  替换内容           ---宏名一般大写


eg:
    #define  N 10 + 10
    
    printf("%d\n", N*N);    10 + 10 * 10 + 10  ...  120
    
    
 作用:
    (1)便于修改
    (2)提高阅读性
1.6.2 打印调试的宏


 printf("%s,%s,%d\n",__FILE__,__FUNCTION__,__LINE__);

1.7数据类型

char   		字符型        1字节         无符号:0~255   有符号:-128~127  
short  		短整型        2字节
int    		整型          4字节    
long        长整型         8字节
long long   长长整型       8字节
float       单精度浮点型    4字节         5~6位
double      双精度浮点型    8字节         15~16位 


    
char   c1= 128;       //出错,数据越界(-128)
char   c1= 129;       //出错,数据越界(-127)
unsigned char  c2= -1;  //出错,数据越界(255)
    
 
short  a = 32768; 

标签:10,字节,int,24.07,运算符,--,31,表达式
From: https://blog.csdn.net/RIOWLee/article/details/140826995

相关文章

  • 24.07.30
    C语言基础day11.linux基础知识1.1Linux操作系统优点: 1.开源源代码可见 2.免费 3.安全性 4.可以软件实现剪裁 5.效率 6.Linux的文件组织模式犹如一颗倒置的树只有一个根目录(/) windows: 1.GUI界面 2.软件生态丰富1.2Linux文件系统Linux的文件组织......
  • 2024-07-31:用go语言,给定两个正整数数组arr1和arr2,我们要找到属于arr1的整数x和属于arr
    2024-07-31:用go语言,给定两个正整数数组arr1和arr2,我们要找到属于arr1的整数x和属于arr2的整数y组成的所有数对(x,y)中,具有最长公共前缀的长度。公共前缀是指两个数的最左边的一位或多位数字相同的部分。例如,对于整数5655359和56554来说,它们的公共前缀是565,而对于1223和434......
  • H7-TOOL自制Flash读写保护算法系列,为国民技术N32G031制作读写使能和解除算法,支持在线
    说明:很多IC厂家仅发布了内部Flash算法文件,并没有提供读写保护算法文件,也就是选项字节算法文件,需要我们制作。实际上当前已经发布的TOOL版本,已经自制很多了。但是依然有些厂家还没自制,所以陆续开始为这些厂家提供读写保护支持。实现效果:本次添加国民技术的N32G031,从2.26版本开......
  • 2024-07-31:用go语言,给定两个正整数数组arr1和arr2,我们要找到属于arr1的整数x和属于arr
    2024-07-31:用go语言,给定两个正整数数组arr1和arr2,我们要找到属于arr1的整数x和属于arr2的整数y组成的所有数对(x,y)中,具有最长公共前缀的长度。公共前缀是指两个数的最左边的一位或多位数字相同的部分。例如,对于整数5655359和56554来说,它们的公共前缀是565,而对于1223和43456来说......
  • 2024.7.31 test
    A给定序列\(S\),一开始只有一个数\(x\),每次操作是把每个\(S_i\)替换为\(S_i\)的所有约数(从小到大排序)求\(k\)次操作后序列前\(m\)的位置的和。\(x,k\le10^{12},m\le10^7\)。因为把每个\(S_i\)替换为\(S_i\)的所有约数后相对顺序不变,所以直接从前往后搜索,复杂度......
  • 20240731题解
    这么简单的题目没有AK(计时器(timer)题目:每次可以加上\(2^n-1\),问多少次变成\(x\)题解:因为较大的数大于较小的数的两倍,直接贪心的选最大的即可。复杂度\(\Theta(T\logn)\)代码:#include<cstdio>#defineintlonglongconstintN=105,A=1000000000000000000;intT,x,f[N......
  • 闲话 731
    核方法(Kernelmethod),一种神秘的解析方法来解生成函数的(通常是多元的)式子。简单的例子:求Dyck路,即横着每次可以走斜上斜下,不能走到\(y\)轴下面,从\((0,0)\)走到\((n,0)\)的方案数。设\(f_i(z)\)为走到\((n,i)\)的方案数的OGF。那么显然有:\[f_i(z)=zf_{i-1}(z)+zf_{i......
  • 2024/7/31 每日一题
    LeetCode3111覆盖所有点的最少矩形数目方法1:贪心classSolution:defminRectanglesToCoverPoints(self,points:List[List[int]],w:int)->int:lst=sorted(set(xforx,_inpoints))ans,idx,i=1,0,0#位于第一个whilei<le......
  • Leetcode每日一题 20240727 3106.满足约束且字典序最小的字符串
    题目描述给你一个字符串s和一个整数k。定义函数distance(s1,s2),用于衡量两个长度为n的字符串s1和s2之间的距离,即:字符‘a’到‘z’按循环顺序排列,对于区间[0,n-1]中的i,计算所有「s1[i]和s2[i]之间最小距离」的和。例如,distance(“ab”,......
  • Vivado中的Timing 38-316警告
    禁用自带的约束文件:在某些情况下,如果不需要IP核自带的约束文件,可以选择禁用它。这通常涉及到在Vivado的设置中查找并取消选中相关的约束选项。因为RAMIP用的CLK是PLL衍生的CLK,自带约束文件,所以禁用RAM自带约束文件(打开约束文件后只发现约束了时钟)后不需要再额外约束。以下......