你以为你真的了解计算机中的数字(整数)嘛?

  • 位操作符
    • 按位与&
    • 按位或|
    • 按位异或^
  • 隐式类型转换
  • 算术转换

位操作符

好的兄弟们,之前初始C语言中阿涛是不是就跟大家讲过,数据在内存中是以二进制形式存放的?那我们难道只是为了二进制而二进制嘛?显然不是的,我们可以利用二进制的属性辅以一些前人设计的机制,来进行一些只有我们程序员才懂得浪漫……

按位与&


二进制里面只有0和1,满二进一,最右边的数据为2的零次方乘以1(0)然后以此类推,根据这个知识我们来精准读出第一行数据为一,第二行数据为5。
那么按位与是什么意思呢?
我们早学习的过程中要学会类比,就是把正在学习的东西和之前学过的东西进行联系,比如我就把按位与理解为了交集,只有同时拥有的部分才是我们的交集。所以按位与实际上的意思就是只用对应位置上同时为一是新数据才为一,也就是有零则零:
根据我们的分析,我们把1^5这是不是等于1呢?我们试一试:

看到没兄弟们一点不差的,我当然可以在给兄弟们举上好多个数字,但是没有必要了,兄弟们就按照我这个方法记,按位与&就是有零就是零!

按位或|

我相信看完我的关于按位与之后,兄弟们已经开始学会用二进制的眼光来看数字了,我们趁热打铁,再继续学习一波按位或|。我们同样的类比到高中学习的并集思想,只要按位或的两个对象对应二进制上有一那就是一!!

这边为了节约大家的时间我直接连读数据加打印一起了!!

按位异或^

下面我们再来说一说按位异或^
按位异或理解起来可能需要我们摈弃一些固有思维:两个数的对应二进制位如果想同则为零(注意注意,相同为零),不同则为一

简单的规则都给兄弟们讲过了,不过我们还应该知道的是位操作符号的两个操作数必须要是整数,浮点数那谈不起来,程序都不会放过你!!

隐式类型转换

C的整型算术运算总是至少以缺省整型类型的精度来进行的。
为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。
整型提升的意义:
表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长
度。通用CPU(general-purpose CPU)是难以直接实现两个8比特字节直接相加运算(虽然机器指令中可能有这种字节相加指令)。所以,表达式中各种长度可能小于int长度的整型值,都必须先转换为int或unsigned int,然后才能送入CPU去执行运算。
这里阿涛偷个懒,直接复制一波定义给兄弟们,当然了兄弟们看着这么老长一段话,一定是脑袋瓜子都嗡嗡的,我直接上手教大家怎么意思!!!

下面我需要高度集中地讲解,也需要大家高度集中地听,教学相长才有意义!
首先我们已经知道了整形在内存中石油四个字节三十二个比特位的,那一个位置就有两种可能性,总共就有2的三十二次方种可能性,但是我们聪明的程序员一想不对啊,加入不加任何修饰那这就只有正数了,难道我整数集合只有半壁江山?所以啊我们就规定好了,应该是他们规定好了整数的最高位为符号位,符号位为零代表正数,符号位为1代表负数,有时候不得不佩服前辈们的智力,这样子一下子打开了格局,为我们后人提供了极大的便利,虽然有的时候我们还是会感觉不是很便利,但是你们要知道,正是因为不便利所以才诞生了我们这个岗位,我们才有饭碗吃,感谢计算机之父!!!!!
好的那么话说回来,整数存储在内存中都是以二进制的补码形式,那么我告诉兄弟们一件事情,原码就是我们读的懂的,可以直接上手去读的那份代码,反码就是符号位不变其他位置取反01互换,补码就是反码+1.
那么正数的原反补码都是一个模样,只有负数才会区分!
掌握了先决条件我们接下来可以讲一讲整形提升了。我们都知道整形在内存中占四个字节,也就是三十二个比特位,那如果我们把一个整数放在一个char类型的变量里面会发生什么?我们知道一个char类型占一个字节八个比特,是不是没有办法放下整型数据的全部内容啊,这种时候就会发生截断,我们在运行

如下操作的时候呢,b和c都是要提升到整型三十二个比特位进行运算的,其中的规则就是高位全部补齐原符号位,当然了我们说的补齐补齐的都是原码


看到没有全部都是这样的,高位补上原符号位!
补齐之后我们再进行运算,这个例子有个比较巧合的地方,是什么呢?就是我们在用原码进行加法的时候,会进上一位,这多出来的一位很明显就没他位置啊,自动就被省略掉了,那么我们算下来的原码就是00000000000000000000000000000011这是一个正数原码反码补码是一样的,所以直接大声读出来是不是三?那如果很不巧,最高的符号位是一那这就是一个负数!

算术转换

那么算术转换就会显得稍微简单一点:
long double
double
float
unsigned long int
long int
unsigned int
int
按照这个顺序从下到上,越往上面级别越高,低级别遇到高低别自动转换为高级别进行运算!
但是如果你瞎搞,非要把一个高级别的搞到低级别里面去,那么不可避免就会造成一方面的数据丢失:

float f = 3.14;
int num = f;

就像这样,能不丢失吗?小数部分全给你玩没了……

那么我今天的讲解就到这里了,希望在看完我的分析之后会对您或多或少有些帮助!
还是那句话:

百年大道,你我共勉!!!!

浅谈一下位操作符吧---我带你深入了解计算机内的数字(暂时限定整数)相关推荐

  1. 数学在计算机科学发展中起到的作用,浅谈数学在计算机科学及应用中的作用_计算机毕业论文...

    全文字数:3518 浅谈数学在计算机科学及应用中的作用 [摘要] 本文简要探讨数学在计算机科学及应用中的作用,初步了解计算机的工作及其原理.数学是计算机发展的基础,几个重要的数学分支在计算机发展中起着 ...

  2. 浅谈数据结构和数据类型

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u012540337/article/details/80499226 最近总是被这两个概念混淆,抽出 ...

  3. 嵌入式AI —— 6. 为糖葫芦加糖,浅谈深度学习中的数据增广

    没有读过本系列前几期文章的朋友,需要先回顾下已发表的文章: 开篇大吉 集成AI模块到系统中 模型的部署 CMSIS-NN介绍 从穿糖葫芦到织深度神经网络 又和大家见面了,上次本程序猿介绍了CMSIS- ...

  4. 跑三小时的monkey测试该怎么算_浅谈App测试(下)~带音频

    文 | Vicky 采编|Emily 浅谈App测试(上)-带音频 一.功能测试​ 二.性能测试 (1)耗电量 影响因素:定位.传感器.蓝牙,其中CPU.持续定位是两个平台造成耗电的主要因素. (2) ...

  5. python命名规则数字开头的成语_浅谈Python中带_的变量或函数命名

    搜索热词 Python 的代码风格由 PEP 8 描述.这个文档描述了 Python 编程风格的方方面面.在遵守这个文档的条件下,不同程序员编写的 Python 代码可以保持最大程度的相似风格.这样就 ...

  6. 浅谈自媒体带货底层逻辑及公众号变现操作路径

    随着自媒体行业的繁荣,带货成为最近两年品牌圈的热门词汇.当品牌选择一个博主时,带货能力强不强是一个至关重要的标准. 正如备受追捧的淘宝大主播李佳琦.薇娅,品牌商家看重的也是他们强大的带货能力. 本文将 ...

  7. 带翠友们浅谈一下翡翠的价格问题?

    带翠友们浅谈一下翡翠的价格问题 翡翠的价格是一个十分复杂的问题,因为他没有一致的价格标准.这是因为它有太多的不确定性.为什么有这么多的不确定性呢,那可能是因为谁也说不清一块翡翠在形成时究竟经过了怎样的 ...

  8. python查询数据库带逗号_浅谈pymysql查询语句中带有in时传递参数的问题

    直接给出例子说明: cs = conn.cursor() img_ids = [1,2,3] sql = "select img_url from img_url_table where i ...

  9. STM32位带区和位带别名区的浅谈

    1.首先谈下为什么要使用位带? 在学习51单片机时就已经使用过位操作,比如使用sbit对单片机IO口的定义,但是STM32中并没有这类关键字,而是通过访问位带别名区来实现,即通过将每个比特位膨胀成一个 ...

  10. 【大道至简】浅谈自然语言处理(NLP)学习路线(二):N-Gram模型,一文带你理解N-Gram语言模型

    本文相关文章:浅谈自然语言处理(NLP)学习路线(一)--- 概述_nlp学习路线_尚拙谨言的博客-CSDN博客 大家好,我是尚拙谨言.欢迎来到大道至简专栏之自然语言处理学习路线.在本系列往期文章中, ...

最新文章

  1. 怎样在表格中选出同一类_超超超超实用的年会策划执行表格模板合集!
  2. GoogLeNet(从Inception v1到v4的演进)
  3. 【MPI程序】向量乘法,向量点积(高性能计算)
  4. 两步实现spark集群
  5. 【译】A gentle introduction to self-sovereign identity
  6. TMS320F28335的SCI通信-FIFO中断通信实验
  7. 编程开发之--Oracle数据库--存储过程在out参数中使用光标(3)
  8. c++语言函数strcpy,C++中函数的安全版本的意义及strcpy函数的功能和差别(图)
  9. 使用js对select动态添加和删除OPTION示例代码
  10. CodeForces - 1485B(找规律+求和) acm寒假集训日记21/12/31or22/1/1
  11. 为什么不用小驼峰也能查到数据库数据_为什么不用驼峰命名创建表名和字段?...
  12. 基于JAVA+SpringMVC+Mybatis+MYSQL的值班管理系统
  13. 特斯拉线圈怎么用_无线快充居然是特斯拉发明的?不愧是发明家
  14. VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用(启动SolidWorks代码/直接驱动模型代码/路径下模型驱动代码/创建两个文
  15. 步进电机转速 与 pwm 关系
  16. 对比不同的JSON字符串或者对象转的字符串
  17. 中点和中值滤波的区别_滤波器知识总结:详解滤波器分类、技术参数及部分种类介绍...
  18. 百度 android 市场占有率,2019百度 排行榜_2019安卓应用市场排行榜Top10
  19. 特斯拉充电电流设置多大_【干货】特斯拉电动汽车4种充电方式详解!
  20. cmd运行jmeter提示不是内部或外部命令

热门文章

  1. spss导入数据 error:对于当前服务器语言环境而言,文本过长
  2. php体检管理系统,学生健康体检信息管理系统
  3. GlobalMapper20如何根据EPSG代号生成prj文件
  4. 华硕笔记本bios设置u盘启动
  5. Android jetpack DataStore 1.0.0-rc02最新版从SharedPreferences迁移到Preferences DataStore
  6. 使用PowerShell查看Windows 补丁记录并写入数据库
  7. vue2.x 微信公众号授权拿取code,静默登录
  8. 华硕台式计算机光盘怎么启动不了,华硕台式机U盘启动不了怎么回事
  9. 8.5 向量应用(三)——知识补充和梳理(夹角、距离和平面束)
  10. msys64安装使用