首页 > 其他分享 >C语言学习之操作符

C语言学习之操作符

时间:2024-11-05 11:20:52浏览次数:3  
标签:int 补码 C语言 学习 二进制 操作符 整型 八进制

(1)二进制、十六进制、八进制

不同进制只是数值不同的表达形式 ,二进制转换十进制省略,从十进制转换到二进制(不断除二取余自下向上将余数从左到右写下来,就转换到二进制);从二进制转换八进制(从左向右每三位按二进制位换算一个八进制位,不够三个直接换算);从二进制转换到十六进制(跟八进制同理,不过是四位二进制转换成一位16进制)一个数字最前面是0X代表是这个数字是十六进制,前面是0就代表是八进制数字。

(2)原码、补码、反码

整数二进制表达形式即以上三种,这三种形式只针对整数,正整数这三者相等,而负整数不相等。源码就是正常二级制的形式,反码是符号位不变,其他所有位按位取反,而补码就是反码+1。符号位众所周知是一段二进制数字中最前面一位,代表这个数字的正负,0代表正,1代表负,故unsigned int类型比较正常int类型多点数据范围,多了2的32次-2的的数据表述的范围。整数在内存中存储二进制数字的补码,CPU中只有加法器,其他算数运算是用加法模拟。原码到补码和从补码到原码都可以通过取反、+1。

(3)移位操作符、位操作符

移动的是内存中存储的二进制位(补码)。1)左移(<<):左边抛弃,右边补0,相当于乘2的几次方,移了几位,乘几次方。2)右移(>>):分为逻辑右移(右边抛弃,左边补0)和算术右移(根据符号位,补符号位的值到左边,右边丢)右移采用哪一种取决与编译器,不同编译器不一样(大部分位算术右移)。

位操作符:&、|、^、~,一共四种,都是双目操作符除了~。&(按位与):有0就为0,都是1才为1;|(按位或):有1就为1,2个0才为0;^(按位异或):对位数字相同就为0,不同为1;~(按位取反):每位都取反。注意:异或操作符特点:1.3^3=0, 0^3=3,  0^n=n(n可以是任何数)3^3^5=5,3^5^3=5(^异或操作符支持交换律)

(4)优先级和结合性

相邻操作符不同优先级高的先执行,优先级相同时结合性说的算。     

还有一个问题叫整型提升:未获得整型精度,表达式中字符和短整型操作数在使用之前转换普通整型,这种转换被称为整型提升

a.所有 char 和 short 类型在参与算术运算之前,会被提升为 int。如果这些类型的值超出了 int 的范围,它们会被提升为 unsigned int

b.在一个表达式中,如果包含了不同的整型,比如 charshort 和 int,所有的这些小类型都会被提升到 int,以便进行计算。

算术转换:算术转换是在进行算术运算时,不同数据类型之间的转换规则。C语言会根据操作数的数据类型自动进行转换,以保证运算的结果是正确的。

#include <stdio.h>

int main() 
{
    char a = 5; // char 类型
    short b = 10; // short 类型
    int c = a + b; // 整型提升,将 a 和 b 提升为 int
    printf("Result: %d\n", c); // 输出 15
    
    float x = 2.5; // float 类型
    double y = 3.5; // double 类型
    double result = x + y; // x 被提升为 double
    printf("Float and double addition: %f\n", result); // 输出 6.0

    return 0;
}

      操作符学习了解它们的作用以及能够用到哪些地方,以上内容是学习完根据课件和笔记总结成一篇文章,如果有错误,还望你能够指出,谢谢。

标签:int,补码,C语言,学习,二进制,操作符,整型,八进制
From: https://blog.csdn.net/2401_86482932/article/details/143472025

相关文章

  • FreeSQL学习
    FreeSQL是一款功能强大的对象关系映射组件,它支持.NETCore2.0+和.NETFramework4.0+。它允许开发者通过简单的接口连接和操作多种类型数据库,包括但不限于MySQL/PostgreSQL/SQLServer/SQLite等。FreeSQL主要特点包括:1.多数据库支持:FreeSQL支持多种数据库系统,包括MySQL/PostgreS......
  • node.js毕设思政知识学习系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于毕设思政知识学习系统的研究,现有研究主要集中在思政教育的传统模式与一般性网络学习平台方面,专门针对毕设思政知识学习系统的研究较少。在思政教育......
  • 学习笔记(二十三):ArkTS语言-模块
    概述:程序可划分为多组编译单元或模块。每个模块都有其自己的作用域,即,在模块中创建的任何声明(变量、函数、类等)在该模块之外都不可见,除非它们被显式导出。与此相对,从另一个模块导出的变量、函数、类、接口等必须首先导入到模块中。一、导出可以使用关键字export导出顶层的声明......
  • SQLite学习
    1.什么是SQLite?  官方定义:SQLite是一个C语言库,它实现了一个小型、快速、自包含、高可靠性、全功能的SQL数据库引起。SQLite是世界上使用最多的数据库引擎。SQLite文件格式是稳定的、跨平台的、向后兼容的,SQLite数据库文件通常用作在系统之间传输丰富内容的容器以及作为数据的......
  • 人工智能(8)——————机器学习之深度学习
    声明以下内容均来自B站吴恩达教授的视频以及西瓜书和众多前辈的学习成果总结,仅记录本人的大模型学习过程,如有侵权立马删除。言论仅代表自身理解,如有错误还请指正。正文在多层神经网络得到重视和大规模发展后,越来越多的神经网络模型被提出,有各种各样千奇百怪的模型算法,有的非......
  • 强化学习理论-第1课-基础概念
    1.state:状态,可以是机器人的位置,速度,加速度等2.action:对于每一个状态,可能的动作3.statetransition:状态转移3.1statetransitionprobability:4.policy:告诉agent在这个状态应该采用哪个action......
  • AI人工智能学习-Day1
    人工智能概论一、课程介绍1、科研工作者GeoffreyHinton是多伦多大学教授,谷歌大脑多伦多升级网络负责人;YannLeCun是纽约大学教授,Facebook研究室负责人,他改进了卷积神经网络CNN算法;YoshuaBengio是蒙特利尔大学教授,微软公司战略顾问,他推动了循环神经网络RNN算法......
  • 强化学习理论-第0课-汇总
    ......
  • 基于django框架开发在线书店推荐系统 python实现个性化网上书店/图书购物商城推荐网站
    基于django框架开发在线书店推荐系统python实现个性化网上书店/图书购物商城推荐网站爬虫、兴趣标签、排行榜标签推荐、热点推荐、协同过滤算法推荐大数据深度学习机器学习人工智能WebBookShopRecPy一、项目简介1、开发工具和使用技术Pycharm、Python3及以上版本,D......
  • 基于django框架开发在线美食推荐系统 python实现个性化美食食谱推荐系统 爬虫、排行榜
    基于django框架开发在线美食推荐系统python实现个性化美食食谱推荐系统爬虫、排行榜、可视化数据分析基于流行度热点推荐、基于用户/物品协同过滤算法推荐、平均加权混合推荐大数据深度学习机器学习OnlineFoodRecommendPy一、项目简介1、开发工具和使用技术Pycharm......