15.04.10-有意思的补码

最近在看《深入理解计算机系统》,学习编程的一些基本的东西,还是觉得很有意思的。

今天看到了补码编码这一节。

最常见的有符号数的计算机表示方式就是补码(two‘s-complement)形式。在这个定义中,将字的最高有效为解释为负权(negative weight).我们用函数B2Tw(Binary to Two‘s-complement的缩写,长度为w)来表示。

最高有效位xw-1也称为符号位,它的"权重"为-2w-1,是无符号表示中权重的负数。符号位被设置为1时,表示值为负,而当设置为0是,值为非负。

仔细看前面那个公式,尤其是前面的-xw-12w-1

那常见的32位整数来看,如果数值为

11111111 11111111 11111111 11111111

= -1*231 + 1*230 + 1*229 + 1*228 +...+ 1*21 + 1*20

=-231 + (231 - 1)//不要问这个结果怎么来的,XXX-_-||求和公式....

=-1

那好,其他的呢?

11111111 11100011 11011101 11110011

= -1*231 + 1*230 +...+ 1*221 + 1*217 +...+ 1*214 + 1*212  + 1*211 + 1*210 + 1*28+...+ 1*24+ 1*21+  1*20//少了2/3/9/13/18/19/20

= -1*231 + (1*230 + 1*229 + 1*228 +...+ 1*21 + 1*20) - 22 - 23  - 29 - 213 - 218 - 219 - 220

=-231 + (231 - 1) - 22 - 23  - 29 - 213 - 218 - 219 - 220

=- 1 - 22 - 23  - 29 - 213 - 218 - 219 - 220

看到这里是不是想起了什么了?

对了,就是常用的负数的二进制表达式的写法。

37(int32)的二进制表达式为 00000000 00000000 00000000 00100101

-37的写法呢:

首先反码:11111111 11111111 11111111 11011010,值是多少?

11111111 11111111 11111111 11011010 = -1 - 20 - 22  - 25 = -37-1

所以在反码的基础上,我们还要+1,才能得到-37的二进制码:

11111111 11111111 11111111 11011011 = -1 - 22  - 2= -37

时间: 2024-10-10 09:44:48

15.04.10-有意思的补码的相关文章

CVE-2015-1328 Ubuntu 12.04, 14.04, 14.10, 15.04 overlayfs Local Root

catalog 0. 引言 1. Description 2. Effected Scope 3. Exploit Analysis 4. Principle Of Vulnerability 5. Patch Fix 0. 引言 新技术.高性能技术的不断发展,越来越提升了操作系统的能力,而近几年出现的虚拟化技术,包括overlayfs虚拟层叠文件系统技术,则为docker这样的虚拟化方案提供了越来越强大的技术支撑,但是也同时带来了很多的安全问题抛开传统的overflow溢出型漏洞不说,还有另一

在虚拟机中安装Ubuntu Server 15.04

学Linux,上红联! 红联Linux门户|Linux通用技术|Linux发行版技术|Linux企业应用|Linux实验室|红联Linux论坛 Linux系统教程 Linux入门 Linux管理 Linux技巧 Linux命令 Ubuntu系统 Linux服务器 Linux数据库 Linux开发 您的位置: Linux系统教程 > Ubuntu系统 > 在虚拟机中安装Ubuntu Server 15.04 时间:2015-06-13来源:blgpl.blog.51cto.com 作者:XIAO

ubuntu 15.04怎么安装QQ

ubuntu 15.04怎么安装QQ | 浏览:468 | 更新:2015-07-21 10:20 1 2 3 4 5 6 7 分步阅读 新装的ubuntu不能没有QQ,我们需要安装QQ来进行及时交流呀,那么该如何在ubuntu下面安装QQ呢. 如果有用,记得给我投票哦 方法/步骤 先升级一下ubuntu系统中的安装源 指令:sudo apt-get update 以便于接下来的操作. 更新完成后,我们接着来安装wine 没错,TX不再研发linux内核下面的QQ了,so,只能用wine安装了.

图片展示 Ubuntu Desktop Next 15.04 的 Unity 8 进展

下载了一个UbuntuDesktop Next 15.04 镜像,做了一个 USB 启动盘,看看 Unity 8 的进展情况,进入界面,我想有很多人已经看过了,有线网络连接的问题在新版本中已经解决,但是没有显示出来,如果想设置一个静态IP就没有办法了,也许是 我没有找到,不过也太隐秘了. 系统因为还不完善所以还存在很多问题,先列举几条: 整个界面还是适用于手机或者平板移动设备,因为操作系统上完全是触摸屏操作习惯: 另外 Ubuntu 软件市场和音乐播放器的搜索还无法输入字符:打不开视频播放器:

利用qmake来为15.04及以上target创建Ubuntu应用项目

我们知道qmake是Qt最原生的跨平台编译工具.由于一些原因,在Ubuntu手机14.10上,广泛使用CMake以跨不同平台.事实上,在Qt Creator上,如果我们使用qmake,我们可以更加方便地管理我们的项目.比如: -我们可以在项目中使用点击右鼠标键来添加或删除文件.在CMake项目中,我们只能进行添加的动作 -在新的模版中加入了使用"main()"的入口,这样可以很方便地让我们的项目编译成为binary.对那些希望把自己的代码进行保护的开发者来说,这无疑是个好的方案 -对文

Ubuntu 15.04 Android编译环境

大部分都与13.04及14.04没有区别: 参考: 重装Ubuntu13.04后需要做的事情 需要注意的是两个问题: 1. JAVA环境会报错 sudo apt-get remove jayatana 将这个玩意删除后JAVA环境检查报错的问题解决. 2. make工具被升级 make工具需要自己下载3.81版本,自己编译安装. 再这里下载3.81版本的gnu-make: 链接: http://ftp.gnu.org/gnu/make/ 解压make-3.81.tar.bz2后, 执行: sud

ubuntu 15.04 使用

全文目录: 一.经典菜单兼容       1.安装gnome2风格的UBUNTU MATE2.安装经典菜单指示器二.更改语言1.汉化环境2.安装搜狗输入法.农历3.加装字体4.添加右键菜单打开终端,扩展 Nautilus 的功能:三.通用软件推荐1.安装GIMP图片编辑器2.安装rar解压功能3.安装字典软件4.wine运行MS Windows程序5.安装虚拟软件Virtualbox6.安装永中办公套件7.安装WPS Office8.安装英语阅读软件9.安装okular10.安装系统指示器Sys

Ubuntu 15.04 下 Docker 1.7.1 中DOCKER_OPTS配置不生效的解决

本人最近在学习Docker,在Ubuntu 15.04下做测试,安装方法是使用Docker官方提供的apt库,然后使用apt-get安装,具体方法参照这里. 我想要测试使用自己的私有库,由于私有库没有配置证书,所以需要在Docker的启动项中修改配置,取消掉证书认证DOCKER_OPTS="--insecure-registry 10.0.40.16:5000".但是在启动Docker进程时,发现没有将DOCKER_OPTS的内容加载进来. 然后我又修改 /etc/default/do

Caffe + Ubuntu 15.04 + CUDA 7.5 新手安装配置指南

Caffe + Ubuntu 15.04 + CUDA 7.5 新手安装配置指南 特: 0. Caffe 官网地址:http://caffe.berkeleyvision.org/ 1. 本文为作者亲自实验完成,但仅限用于学术交流使用,使用本指南造成的任何不良后果由使用者自行承担,与本文作者无关,谢谢!为保证及时更新,转载请标明出处,谢谢! 2. 本文旨在为新手提供一个参考,请高手勿要吐槽,有暴力倾向者,请绕道,谢谢! 3. 本文使用2015年11月8日下载的caffe-master版本,运行平