左移(<<),右移(>>), (i++ 如果没有接收方,那么“先使用”,如何理解?),取余和取模一样吗?

简介: 左移(<<),右移(>>), (i++ 如果没有接收方,那么“先使用”,如何理解?),取余和取模一样吗?

左移:最高位丢弃,最低位补0;


右移:先判定是算术右移还是逻辑右移,判定依据:看自身类型,和变量的内容无关,判定了是算术右移还是逻辑右移,才决定最高位补什么。


1、无符号数:最低位丢弃,最高位补0(逻辑右移)


2、有符号数:最低位丢弃,最高位补符号位(算术右移)



下面我们来分析一下截取的反汇编的一段核心代码:



结论:i++完整的含义是先使用,再自增,如果没有变量接收,那么直接自增(或者所谓的使用,就是读取进寄存器)


取整:


取整一共有四种方法,分别是:


1、round(向0取整)(C语言默认的取整方式)


2、floor(向负无穷大取整)


3、ceil(向正无穷大取整)


4、trunc(四舍五入取整)


下面是对应的一张表:




可以发现,某些数据的取整方法虽然不同,但是取整之后的结果是有可能相同的。


结论:浮点数(整数/整数)是有多种取整方式的。


取模&取余:


取模&取余概念:如果a和d是两个自然数,d非零,可以证明存在两个唯一的整数q和r,满足a=q*d+r且


0<=|r|<|d|,其中q被称为商,r被成为余数。


在C语言中,-10%3=-1(因为C语言采用的是向0取整,所以是商3余-1(负余数))


但是在python中,-10%3=2(原因是python中采用了向负无穷取整,所以是商-4余2(正余数))


取余和取模一样吗?


其实这两个并不是严格上的相等。


本质1取整:


取余:尽可能让商,进行向0取整。


取模:尽可能让商,向负无穷方向取整


故:


C语言中的%,本质其实是取余。


python中的%,本质其实是取模。


理解链:


对于任意一个大于0的数,对其进行0向取整和负无穷取整,取整方向是一致的,故取余等价于取模。


对任何一个小于0的数,对其进行0向取整和负无穷取整,取整方向是不一致的,故取余不等价于取模。


同符号数据相除,得到的商一定是正数,即大于0!故在对其商进行取整的时候,取模等价于取余


相关文章
|
运维 Dubbo 安全
政采云基于 Dubbo 的混合云数据跨网实践
本文将从项目背景、为什么叫高速公路、修路实践以及未来规划 4 个方面分享 Cloud Native 政采云基于 Dubbo 的混合云数据跨网实践。
|
11月前
|
JavaScript 前端开发 测试技术
Goja—Go 和 JavaScript 的桥梁
Goja—Go 和 JavaScript 的桥梁
|
9月前
反馈机制
反馈机制
590 6
|
开发框架 前端开发 JavaScript
在ABP VNext框架中处理和用户相关的多对多的关系
在ABP VNext框架中处理和用户相关的多对多的关系
|
机器学习/深度学习 存储 编解码
多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
多任务学习新篇章 | EMA-Net利用Cross-Task Affinity实现参数高效的高性能预测
449 0
|
Java Redis 数据安全/隐私保护
Redis14----Redis的java客户端-jedis的连接池,jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,最好用jedis连接池代替jedis,配置端口,密码
Redis14----Redis的java客户端-jedis的连接池,jedis本身是线程不安全的,并且频繁的创建和销毁连接会有性能损耗,最好用jedis连接池代替jedis,配置端口,密码
|
SQL 关系型数据库 MySQL
【MySQL】Mysql索引失效场景(15个必知)(一)
【MySQL】Mysql索引失效场景(15个必知)(一)
1548 0
【MySQL】Mysql索引失效场景(15个必知)(一)
|
Java PHP 开发工具
eclipse安装教程
eclipse安装教程
174 1
|
定位技术
GIS系列专题(2):Clipper计算机图形库使用说明(Vatti‘s clipping algorithm)
GIS系列专题(2):Clipper计算机图形库使用说明(Vatti‘s clipping algorithm)
2213 0
GIS系列专题(2):Clipper计算机图形库使用说明(Vatti‘s clipping algorithm)
|
Python
pycharm里available packages显示nothing to show
pycharm里available packages显示nothing to show
1263 0
pycharm里available packages显示nothing to show