求两个数的较大值

要求:写一个函数秋凉书的较大值

第一种无函数

#include <stdio.h>

int main() 

{

     int  num1=10;

     int  num2=20;

     if(num1>num2)

        printf("较大值是:%d\n",num1);

    eles

        printf("较大值是:%d\n",num2);

    return 0;

}

第二种 有函数

#include<stdio.h>

int   Max(int x,int y)

{

       if(x>y)

         return x;

      else

          return y;

}

int main()

{

      int num1=10;

     int num2=20;

     int max=0;

     max=Max(num1,num2);

     printf("max=%d\n",max);

     return 0;

}

sizeof的用法(操作数的类型和长度-以字节为单位)

#include<stdio.h>

#include<string.h>

int main

{

      int a=10;

      int arr[]={1,2,3,4,5,6};    //6*4=24

      printf("%d\n",sizeof(a));

      printf("%d\n",sizeof(int));

      printf("%d\n",sizeof a);

      printf("%d\n",sizeof(arr));  //计算数组大小,单位是字节

      printf("%d\n",sizeof(arr)/sizeof(arr[0]));    //6

       return 0;

}

原码反码补码之间的关系

机械数

       一个数在计算的存储形式是二进制数,我们称这些二进制数为机械数,机械数是有符号,在计算机中用机械数的最高位存放符号位,0表示整数,1表示负数。

机械数的真值

     因为带有符号位,所以机械数的形式值不等于去其真值,以机械数10000111为例,其真正表示的值为-7,而形式值为135。(将带符号的机械数的真正表示的值称为机械数的真值)

原码

     原码的表示与机械数真值表示的一样,即用第一位表示符号,其余位表示数值

    例如十进制的正负1,用八位二进制的原码表示如下;

      +1=原:00000001         -1=原:10000001

反码

    反码的表示方法:  1.正数的原码是其原码本身

                                2.负数的原码是在其原码的基础上,符号位不变,其余各位取反

                                +1=原:00000001   =反:00000001

                                -1=原:00000001    =反:11111110

补码

正数的补码是其原码本身

负数的补码是在其原码的基础上,符号位不变,其余各位取反后加1(即在反码的基础上+1)

         +1=原:00000001   =反:00000001   =补:00000001

        -1=原:00000001    =反:11111110    =补:11111111

数据在计算机中的存储形式

     计算机实际只存储补码,所以原码准换为补码的过程,也可以理解为数据存储到计算机内存中的过程

计算机输入数据(-1)(转换为原码)原码(1000001)(转换为反码)反码(11111110)(转换为补码)补码(11111111)存储到计算机内存

        在原码反码补码,正数的表示是一模一样的,而负数的表示是不相同的,所以对于负数的补码来说,我们是不能直接用进制转换将其转换为十进制数值的,因为这样是得不到计算机真正存储的十进制数的,所以应该将其转换为原码后,再将转换得到的原码进行禁止转换为十进制数               

~    对一个数的二进制按位取反

#include<stdio.h>

int main()

{

      int a=0;      一个字节,32个比特位

      int b=~a;       b是有符号的整形

                   按照二进制位取反

          00000000000000000000000000000000

          11111111111111111111111111111111

        原码,反码,补码

        负数在内存中存储的时候,存储的是二进制的补码

      printf(“%d\n”,b);    使用的,打印的是这个数的原码

       

       return 0;

}