3.整数运算

系列文章目录

信息的表示和处理 :

  1. Information Storage(信息存储)
  2. Integer Representation(整数表示)
  3. Integer Arithmetic(整数运算)
  4. Floating Point(浮点数)

文章目录

  • 系列文章目录
  • 前言
  • 一、无符号数的加法(Unsigned Addition)
  • 二、无符号数加法逆元
  • 三、补码的加法(Two's Complement Addition)
  • 四、补码的逆元
  • 五、乘法
  • 六、乘以常数(Multiply by Constants)
  • 七、除以2(Dividing by Powers of 2)
  • 总结
  • 参考文献:


前言

本文参考书籍是《深入理解计算机系统 3th 中文版》,本文的图片大多是参考和来自于b站up主九曲阑干。非常感谢大佬,侵权删。

本篇文章会提到部分整数数据和算数操作的术语,详情可见2.整数表示的前言部分。


一、无符号数的加法(Unsigned Addition)

先来看一个例子:

unsigned char a = 255;
unsigned char b = 1;unsigned cahr c = a + b;
printf("c = %d", c)

运行结果: c = 0
在这里插入图片描述
下面是这样一个无符号数加法的总结性结论:
在这里插入图片描述

考虑溢出,C 语言不会将溢出作为错误发出信号
当 x+y >= 2^w, 实际结果为 s = x+y-2^w
对任意的 x+y,s = (x+y) % 2^w

在这里插入图片描述
上述代码是判断是否溢出,证明略

二、无符号数加法逆元

根据逆元的定义好理解,但是从常识来讲不好理解
在这里插入图片描述在这里插入图片描述

三、补码的加法(Two’s Complement Addition)

在这里插入图片描述

正溢出:

char x = 127;
char y = 1;char z = a + b;
printf("z=%d", z);

运行结果:z = -128

解释:
在这里插入图片描述
负溢出:
在这里插入图片描述
如何判断溢出:
在这里插入图片描述

四、补码的逆元

这个知识点是没啥用又不太好理解的知识点,略过

五、乘法

正常的乘法:
在这里插入图片描述
无符号数的乘法:
在这里插入图片描述
补码的乘法:
在这里插入图片描述
举一个3-bit的乘法:

在这里插入图片描述可以看到,当相同的二进制位(binary)它们分别用不同的表示方式(无符号数,补码)相乘,在位层面上是一样的吗?
证明:
在这里插入图片描述在这里插入图片描述

六、乘以常数(Multiply by Constants)

在这里插入图片描述

相当于10进制里面移动小数点

为什么会这样???
在这里插入图片描述
举一个例子:
在这里插入图片描述

七、除以2(Dividing by Powers of 2)

在这里插入图片描述
在这里插入图片描述注意:补码和无符号数的右移
在这里插入图片描述证明略

这里有个特殊点:
在这里插入图片描述
这里我们期望得到的是-771而不是-772(直接向右算数移动四位)。

首先,我们为什么这么期望?因为有如下规则(向0舍弃):
在这里插入图片描述为了满足这种规则,如果x小于0,移位之前要加上一个bias
在这里插入图片描述这个bias的值是( 1 << k ) - 1
在这里插入图片描述


总结

  1. 无符号数加法可能会导致溢出
  2. 无符号数的加法逆元和补码逆元(鸡肋)
  3. 补码的加法:
    • 正溢出
    • 负溢出
  4. 无符号数的乘法,和补码的乘法
  5. 乘以常数,可以用左移。甚至可以拆分常数将其弄成2^k的组合形式
  6. 除以2^k
    • 正数就逻辑右移
    • 负数加上bias再算数右移(bias的作用就是使得结果向0舍入)
  7. 上面的乘以和除以2^k就可以用小数点移位去理解,就相当于是10进制中的乘和除以10^k

参考文献:

  1. 《深入理解计算机系统 3th 中文版》
  2. b站up主九曲阑干

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国际护士节庆祝活动向媒体投稿有方法很轻松

作为一名医院职工,我肩负着医院对外信息宣传的重任。在国际护士节这个特殊的日子里,我们医院举办了一系列庆祝活动,以表彰护士们的辛勤付出和无私奉献。然而,在将这些活动信息投稿至媒体的过程中,我最初却遭遇了诸多挑战。 起初,我采用传统的邮箱投稿方式,将精心撰写的稿件发送…

小程序常用组件

小程序常用组件 1.组件的定义2.常用组件3.引入外部字体图标库4.组件样式5.示例代码 1.组件的定义 组件就是指微信定义的具有特殊功能的标签&#xff0c;在wxml中只能使用微信定义的标签。 2.常用组件 <view>&#xff1a;用于页面布局的块级组件&#xff0c;类似于html中的…

基础ArkTS组件:帧动画,内置动画组件,跑马灯组件(HarmonyOS学习第三课【3.6】)

帧动画 帧动画也叫序列帧动画&#xff0c;其原理就是在时间轴的每帧上逐帧绘制不同的内容&#xff0c;使其连续播放而成动画。ArkUI开发框架提供了 ImageAnimator 组件实现帧动画能力&#xff0c;本节笔者介绍一下 ImageAnimator 组件的简单使用。 官方文献 说明 该组件从A…

基于springboot+vue+Mysql的音乐翻唱与分享平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

如何用时尚新姿讲好中国品牌故事?

品牌建设在推动高质量发展中扮演了双重角色&#xff0c;既是高质量发展的重要“承载者”&#xff0c;也是强有力的“助推器”。5月10日-11日&#xff0c;中国时尚品牌URBAN REVIVO&#xff08;以下简称UR&#xff09;以中国品牌日为起点&#xff0c;联合天猫超级品牌日&#xf…

python内置函数exec()和eval()区别

在Python中&#xff0c;eval() 和 exec() 都是内置函数&#xff0c;用于执行存储在字符串或对象中的Python代码&#xff0c;但它们之间也有一些区别。 eval() 语法&#xff1a;eval(expression, globalsNone, localsNone) expression&#xff1a;需要求值的字符串表达式。可…

ohmyzsh的安装过程中失败拒绝连接问题的解决

1.打开官网Oh My Zsh - a delightful & open source framework for Zsh 在官网能看到下面的界面 有这两种自动安装的方式 个人本次选择的是: wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O - 1.打开终端输入安装的指令 sh -c "$(wget…

【C++】继承与多态的一些练习题

学习完了继承与多态&#xff0c;当然要来点练习题啦~ 第一题&#xff1a; class Base1 { public: int _b1; }; class Base2 { public: int _b2; }; class Derive : public Base1, public Base2 { public: int _d; }; int main(){ Derive d; Base1* p1 &d; Base2* p2…

基于SpringBoot + Vue的学生宿舍课管理系统设计与实现+毕业论文(15000字)+开题报告

系统介绍 本系统包含管理员、宿管员、学生三个角色。 管理员&#xff1a;管理宿管员、管理学生、修改密码、维护个人信息。 宿管员&#xff1a;管理公寓资产、管理缴费信息、管理公共场所清理信息、管理日常事务信息、审核学生床位安排信息。 学生&#xff1a;查看公共场所清理…

SSH 免密登录,设置好仍然需要密码登录解决方法

说明&#xff1a; ssh秘钥登录设置好了&#xff0c;但是登录的时候依然需要提供密码 查看系统安全日志&#xff0c;定位问题 sudo cat /var/log/auth.log或者 sudo cat /var/log/secure找到下面的信息 Authentication refused: bad ownership or modes...&#xff08;网上的…

外卖系统微信小程序支付

微信小程序支付时序图 其中第9.步骤就是微信小程序前端调用wx.requestPayment

Vue3实战Easy云盘(三):文件删除+文件移动+目录导航+上传优化/文件过滤/搜索

一、文件删除 &#xff08;1&#xff09;选中了之后才可以删除&#xff0c;没有选中时就显示暗调删除按钮 &#xff08;2&#xff09;实现选中高亮功能 &#xff08;3&#xff09;单个删除 &#xff08;4&#xff09;批量删除 Main.vue中 <!-- 按钮3 --><!-- 如果sel…