3/13/24运算符、补码、整型、浮点型、汇编

目录

三目运算符

逗号运算符

自增自减运算符

位运算

运算符优先级

补码讲解

整型解析

溢出解析

浮点数IEEE754标准解析

浮点数精度丢失

真题

汇编指令

生成汇编方法

常用指令


三目运算符

条件运算符是C语言中唯一的三目运算符。通过判断问号之前的表达式的真假,来确定整体表达式的值。

result=(condition)?a:b;

condition为true时,result=a;为false时,result=b。

条件运算符高于赋值运算符。

逗号运算符

逗号运算符的优先级最低。逗号表达式的整体值是最后一个表达式的值

eg:if(i,j-1)//并不会进入if内,逗号表达式整体的值是(j-1)。

自增自减运算符

其它运算符除了赋值运算符外都不可以改变变量本身的值。而自增自减保留自B语言的习惯。

++i;先加再使用i。

i--;先使用i,再减。

j=*p++;等价于j=*p;p++;

j=p[0]++;等价于j=p[0];p[0]++;

位运算

左移:<<。高位丢弃,低位补0,相当于乘以2。

右移:>>。低位丢弃,正数高位补0,负数高位补1,相当于除以2。位移比乘法和除法的效率更高,对于负偶数右移是除以2,但对于负奇数右移是先减1再除以2。eg:-7>>1得到-4。-1无论右移多少位,值永远是-1。

C语言的左移和右移相当于算术左移和算术右移。考研中的逻辑左移和右移都是再空位都补0。

按位取反:~。数位上的1变成0,0变成1。

按位或:|。用两个数的每一位进行或,有1为1。

按位与:&。用两个数的每一位进行与,有0则0。

按位异或:^。同0异1。相同的数进行异或时,结果是0,任何数和0异或的结果是其本身。

位运算符只能对整型数据进行操作,位运算自身不会改变。

运算符优先级

补码讲解

计算机的CPU实际上是无法做减法操作的(硬件上没有减法器),只能做加法。

原码即值本身。

补码=原码按位取反后+1。用正数的补码表示负数。负数的原码就是正数的原码。

原码=补码-1后按位取反。先取反后+1也可以。

x86架构是小端存储,小端存储时低字节在前,即低字节再低地址。大端相反。是单字节颠倒,即8bit。

而在考研中,补码的符号位不变,即原码取反时最高位不变。正数的补码和原码一致。

反码:正数的反码和原码一样。负数的反码就是在原码的基础上,符号位不变,其它位不变。

整型解析

无符号数存储:2^n-1

有符号数存储:2^(n-1)-1

最小负数:1000 0000 0000 0000 -32768 补码。原码是本身。

溢出解析

#include <stdio.h>

//整型不同类型的演示,以及溢出演示
int main() {
    int i = 10;
    short a = 32767;
    short b = 0;
    long c;//32位的程序是4个字节,64位的是8个字节
    b = a + 1;//发生了溢出,解决溢出的办法是用更大的空间i来存
    printf("%d\n", b);//b并不是32768,而是-32768
    printf("------------\n");
    unsigned int m = 3;
    unsigned short n = 0x8056;//无符号类型,最高位不认为是符号位
    unsigned long k = 5;
    b = 0x8056;
    printf("b=%d\n", b);//b是有符号类型,所以输出是负值
    printf("n=%u\n", n);//无符号类型要用%u,用%d是不规范的
    return 0;
    return 0;
}

浮点数IEEE754标准解析

浮点数精度丢失

真题

汇编指令

生成汇编方法

在环境变量中配置Path:G:\mingw64\bin

执行程序后,在终端中输入指令即可生成汇编文件。

gcc -S -fverbose-asm main.c

常用指令

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值