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

news2025/2/24 18:17:50

目录

三目运算符

逗号运算符

自增自减运算符

位运算

运算符优先级

补码讲解

整型解析

溢出解析

浮点数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

常用指令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1529100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux之权限管理和组

一&#xff0c;ACL权限 1.1&#xff0c;什么是acl权限&#xff1f; ACL是Access Control List的缩写&#xff0c;即访问控制列表。可以通过下列的实例来理解ACL的作用&#xff1a; 思考如何实现如下的权限控制&#xff1a; 每个项目成员在有一个自己的项目目录&#xff0c;…

网工内推 | 信息安全主管,CISP认证优先,最高25K,加绩效提成

01 福建省数字福建云计算运营有限公司 招聘岗位&#xff1a;网络及信息安全主管 职责描述&#xff1a; 1.负责带领IT运维团队&#xff0c;对公司网络与安全整体架构规划&#xff0c;设计、运营及IT设备的全生命周期运维规划等&#xff1b; 2.负责对网络、网络安全的日常运维管…

【JavaScript】JavaScript 程序流程控制 ① ( 顺序流程控制 | 分支流程控制 )

文章目录 一、JavaScript 程序流程控制简介1、顺序流程控制2、分支流程控制3、分支流程控制 - 代码示例 一、JavaScript 程序流程控制简介 JavaScript 程序 执行过程中 , 不同的代码执行顺序 , 得到的结果是不同的 , 在编程中 经常 需要 根据 不同的条件 执行不同的代码块 , 或…

计算机缺失msvcp110.dll如何修复,多种修复方法教给你

当电脑系统中msvcp110.dll文件丢失时&#xff0c;可能会对计算机的正常运行产生一系列显著的影响。msvcp110.dll是Microsoft Visual C Redistributable Package的一部分&#xff0c;这个动态链接库文件对于许多基于Windows的应用程序至关重要&#xff0c;尤其是一些使用C编译器…

2024蓝桥杯每日一题(回溯)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;木棒 试题二&#xff1a;n皇后问题 试题三&#xff1a;糖果 试题四&#xff1a;飞机降落 试题五&#xff1a;生日蛋糕 试题一&#xff1a;木棒 【问题描述】 乔治拿来一组等长…

【工具】Mermaid + 大模型画流程图

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 引入使用画TCP三次握手了解历史人物 总结 引入 最近看面试文章关于TCP三次握手和…

PTA L2-021 点赞狂魔

微博上有个“点赞”功能&#xff0c;你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签&#xff0c;而你点赞的博文的类型&#xff0c;也间接刻画了你的特性。然而有这么一种人&#xff0c;他们会通过给自己看到的一切内容点赞来狂刷存在感&#xff0c;这…

好委屈,东方甄选为何总是被供应商骗?

东方甄选最近很委屈。 315晚会过后&#xff0c;知名打假人王海爆料&#xff0c;称315晚会曝光的槽头肉扣肉在东方甄选和小杨哥的直播间里销售过。 东方甄选赶忙去问了问供应商情况。 供应商的回答让他感到暖心&#xff0c;表示虽然315晚会曝光了我们公司违规使用糟头肉&…

Pulsar IO实战

一、引言 今天跟着 官方文档 基于docker玩一把Pulsar IO吧 二、概要 在用户能够轻松的将消息队列跟其他系统(数据库、其他消息系统)一起使用时&#xff0c;消息队列的作用才是最强大的。而Pulsar IO connectors可以让你很轻松的创建、部署以及管理这些跟外部系统的连接&#…

Golang 开发实战day04 - Standard Library

Golang 开发实战day04 - Standard Library 接下来开始我们第四天学习&#xff0c;Go语言标准库提供了丰富的功能&#xff0c;可以帮助开发者快速完成各种任务。 golang就像其他语言一样&#xff0c;附带了一些非常轻量级的函数和特性&#xff0c;都是开箱即用的&#xff0c;这里…

KMM初探

什么是KMM&#xff1f; 在开始使用 KMM 之前&#xff0c;您需要了解 Kotlin。 KMM 全称&#xff1a;Kotlin Multiplatform Mobile&#xff09;是一个用于跨平台移动开发的 SDK,相比于其他跨平台框架&#xff0c;KMM是原生UI逻辑共享的理念,由KMM封装成Android(Kotlin/JVM)的aar…

第四百一十一回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题的结果"相关的内容&#xff0c;本章回中将介绍自定义标题栏.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我…

第四百一十二回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了"给geolocator插件提交问题的结果"相关的内容&#xff0c;本章回中将介绍自定义标题栏.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我…

我的自建博客之旅04之Halo

我的自建博客之旅04之Halo Halo是我无意间发现的一款博客框架,如果你讨厌Hexo,Vuepress等静态框架本地编辑,构建部署等方式,如果你想要一款一次搭建,前台是博客,后台是文章维护,并且支持各种定制化折腾的博客框架,可能Halo会比较适合你。 因为我个人还是比较偏技术,…

八节【DBA从入门到实践】课程,带你快速掌握OceanBase运维管理核心技能

为帮助用户及开发者更好、更快地掌握OceanBase DBA核心技能&#xff0c;OceanBase社区设计了配套教程——“DBA从入门到实践”。8期教程带大家循序渐进掌握OceanBase运维管理核心技能。搭配随堂习题和OceanBase技术专家在线答疑&#xff0c;快速掌握重要知识点&#xff0c;并轻…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Refresh)

可以进行页面下拉操作并显示刷新动效的容器组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 从API version 11开始&#xff0c;Refresh子组件会跟随手势下拉而下移…

【数据结构】链表力扣刷题详解

前言 题目链接 移除链表元素 链表的中间结点 反转链表 分割链表 环形链表的约瑟夫问题 ​ 欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 移除链表元素 题述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请…

搜维尔科技:OptiTrack提供了一个通用、精确、灵活和可监控的系统!

MELS集成OptiTrack与最前沿的虚拟生产阶段 在加拿大蒙特利尔&#xff0c;MELS Studios and Postproduction设有20个工作室&#xff0c;以满足各种规模的电影和电视项目的需求。凭借先进的技术设施和专业的技术团队&#xff0c;梅尔斯为电影行业的合作伙伴提供从摄影棚和设备租…

应用开发技术巩固指南

前言 起初毕业前夕&#xff0c;个人已经开始自学Android开发&#xff0c;由于没有指导&#xff0c;所以起步很难&#xff0c;写的代码也规范&#xff0c;逻辑不清&#xff0c;技术止步于皮毛&#xff0c;很多东西都不理解。 后来步入工作&#xff0c;逐渐熟悉了这个方向&…

Zustand极简的状态管理工具

介绍 一个小型、快速且可扩展的 Bearbones 状态管理解决方案。 Zustand 有一个基于 hooks 的舒适 API。它不是样板文件或固执己见&#xff0c;但有足够的惯例来明确和类似通量。 zustand官网 zustand使用方法及调试工具的安装使用 安装包 npm install zustand2.创建store仓…