IOS之c语言笔记 day05

本文介绍了C语言的基础概念,包括变量交换的不同方法、判断数值奇偶性的多种方式以及如何表示整数在内存中的二进制形式等内容。通过具体的代码示例展示了位运算的应用,并解释了补码的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

day01

c语言基础

aeb -> a*10的b次方

交换两个变量的值

int main()
{
    int v1 = 10;
    int v2 = 11;

    // methodA:
    int temp = v1;
    v1 = v2;
    v2 = tmep;

    // methodB:
    v1 = v2-v1;   // v1 = 11 - 10;
    v2 = v2 - v1; // v2 = 11 - 1; v2 = 10;
    v1 = v2 + v1; // v1 = 10 + 1; v1 = 11;

    // methodC:
    v1 = v1 ^ v2;  // v1 = 10 ^ 11;
    v2 = v1 ^ v2;  // v2 = 10 ^ 11 ^ 11; v2 = 10;
    v1 = v1 ^ v2;  // v1 = 10 ^ 11 ^ 10; v1 = 11;

    return 0;
}
判断一个数的奇偶性

A:%2 == 0;

B:使用位与&运算符判断

可以使用这个来精简if..else语句
true =1;false = 0;

最后一位是1奇数,0 偶数

a&1 == 1; // 奇数
a&1 == 0; // 偶数
取出最后一位的值&1;

int main()
{
    int a = 10 ;

    if(a % 2 == 0)
    {
        printf("这是偶数\n");
    }
    else
    {
        printf("这是基数\n");
    }

     代码精简
     有返回值得方法才可以在这里使用
    a % 2 == 0 ? printf("这是偶数\n") : printf("这是基数\n");

     true = 1; false = 0;
     a % 2 ? printf("这是基数\n") : printf("这是偶数\n");

     新写法
    if(a % 2)
    {
       printf("这是基数\n");
    }
    else
    {
        printf("这是偶数\n");
    }

      位&


    /**
    11 1011
     9 1001

    10 1010
     6 0110


     最后1一位就1就是基数,0就是偶数
     最后1位&1等于1就是基数,0就是偶数
     取出最后一位人数据&1
     */
     return 0;
}

编写整数在内存中的二进制位

按位取反:
  ~9 = -10;
int printfBinary(int num)
{
    // sizeof(num)*8-1
    // 32 bate: 16-1=15;
    // 64 bate: 32-1=31;
    int tmp = (sizeof(num)<<3) - 1;
    while(tmp >= 0)
    {
        // 先→移32位再取出值
        int value = num>>tmp & 1;
        printf("%d",value);
        tmp--;
        // 每隔4位加一个空格
        if((tmp +1 ) % 4 == 0)
        {
            printf(" ");
        }
    }
    printf("\n");
    return 0;

}

int main()
{
    printfBinary(-10);
    return 0;
}
负数的补码
例-2的补码
0的原码,反码,补码全部是0
在二进制中最高位0代表正数,1代表负数
-2的补码过程
用二进制在内存中的表现形式进行转换
先将-2转换成正数在内存中的表现形式
 2原码:0000-0000 0000-0000 0000-0000 0000-0010
-2原码:1000-0000 0000-0000 0000-0000 0000-0010
-2反码:1111-1111 1111-1111 1111-1111 1111-1101
负数的补码=负数的原码+1
  +1  :0000-0000 0000-0000 0000-0000 0000-0001
-2补码:1111-1111 1111-1111 1111-1111 1111-1110
即求得 -2的补码为1111-1111 1111-1111 1111-1111 1111-1110
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值