聊一下补码1

对于补码一直只知道应用方法,就是正数的补码是其本身,负数的补码是其对应正数的每一位取反后加一,这样减法操作就可以用加法来实现。但是一直不太明了其原理,今天就来掰开揉碎了聊一下。

补码源自于数学上补数的概念和方法,所以理解补码必须先理解补数。

补数

补数(radix comletment)的定义:有一个以b为基数,位数为n的数字y,y的补数即是b的n次方减去y。例如,基数是10,三位数123的补数就是877(1000-123)。

缩减基数补数(diminished radix complement)的定义:b的n次方减1减y。例如,基数是10,123的缩减基数补数就是876(1000-1-123)。

为什么有个缩减基数补数呢,因为更方便计算。从数学上可以证明b的n次方减1减y可以这样得到,y的每一位数被b-1减去。例如上面的例子,9(10-1)-1,9-2,9-3可以分别得到y的缩减基数补数的百位,十位和个位。至于如和证明,可以自行google。

减法的加法能实现原理

用加法实现减法,可以有两种方法。

第一种,用x的缩减基数补数加上y得到x-y的缩减基数补数。

第二种,x加上y的补数可以得到x-y的值。

待续。。。

本人水平有限,但是欢迎指正交流。

如果你觉得有点意思,欢迎关注 悟空的小车库。

时间: 2024-12-25 18:24:58

聊一下补码1的相关文章

原码,反码,补码杂谈

本文从原码讲起.通过简述原码,反码和补码存在的作用,加深对补码的认识.力争让你对补码的概念不再局限于:负数的补码等于反码加一. 接触过计算机或电子信息相关课程的同学,应该都或多或少看过补码这哥仨.每次都是在课本的最前几页,来上这么一段:什么反码是原码除符号位,按位取反.补码等于反码加一.然后给整得莫名其妙,稀里糊涂地,接着就是翻页,反正后面的内容也跟三码没多大关系. 我原来也是看了好几遍都没看懂.古人云:事不过三.学C语言的时候,看过一次.不懂?看<计算机基本组成原理>的时候看过,还是不懂!到

原码、反码、补码

原码.反码.补码,计算机中负数的表示 1.表示范围 拿单字节整数来说,无符号型,其表示范围是[0,255],总共表示了256个数据.有符号型,其表示范围是[-128,127]. 先看无符号,0表示为0000 0000,255表示为1111 1111,刚好满足了要求,可以表示256个数据. 再看有符号的,若是用原码表示,0表示为0000 000.因为咱们有符号,所以应该也有个负0(虽然它还是0):1000 0000. 那我们看看这样还能够满足我们的要求,表示256个数据么? 正数,没问题,127是

Java套接字编程实现群聊与私聊[原理版]

简介 运用Java套接字我们几乎可以完成一个网络聊天软件的小产品,本文不涉及UI部分,仅对原理部分用代码演示一下.一个可以多人聊天的小功能,在Linux系统上用telnet亲测可用. 服务器代码 package demo0811.demo3; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.

计算机基础知识_原码反码补码

一.原码,反码,补码 1.原码 比如一个二进制数字 最高位是0,(0代表正数) 0010 1000 那么原码就是0010 1000 反码: 0010 1000 补码: 0010 1000 都是一样的,这个二进制数字的10进制是40 所以是正数 正数的原反补都是一样的 2.反码 反码就是原码的取反,二进制的 0变为1 1变为0 ,看最高符号位是0 还是1,如果是1,则你要0变为1,1变为0, 3.补码: 负数的的是原码 取反 在加1 变成补码(二进制数) 正数的原码 加上负数的补码就等于是做减法运

原码 反码 补码

出处来自:http://blog.csdn.net/liushuijinger/article/details/7429197 原码: 如果机器字长为n,那么一个数的原码就是用一个n位的二进制数,其中最高位为符号位:正数为0,负数为1.剩下的n-1位表示概数的绝对值. 例如: X=+101011 , [X]原= 00101011    X=-101011 , [X]原= 10101011 位数不够的用0补全. PS:正数的原.反.补码都一样:0的原码跟反码都有两个,因为这里0被分为+0和-0.

基于itchat的微信群聊小助手基础开发(一)

前段时间由于要管理微信群,基于itchat开发了一个简单的微信机器人 主要功能有: 图灵机器人功能 群聊昵称格式修改提示 消息防撤回功能 斗图功能 要开发一个基于itchat的最基本的聊天机器人,在github上作者已经给出基本的操作,本博文只对附加的功能进行说明总结. 确保已经了解itchat的基本操作,先对功能1和功能2进行说明: 1.图灵机器人功能 该功能也是最基础的功能之一,itchat的基础案例也有相关例子. 图灵机器人简单而言就是以一定的规则给图灵的服务器发送数据包,图灵的服务器会以

nodejs实如今线群聊

这不是一个项目而是一个适合刚開始学习的人学习的样例.主要实现了下面基本功能: 1:群聊.每个人都能够收到其它人的消息,以及能够发消息给其它人,每个人用ip地址标识. 2:显示当前在线用户. 3:每个用户登入登出.其它人都能够看到. 4:每个用户能够看到其它人是否正在输入消息. 实现方式没有选择低效的轮询方式,而是採用基于websocket协议的socket.io模块,websocket协议同意在client与服务端之间建立一个全双工的通信通道.因此服务端能够主动推消息给client.相比传统的轮

java基础:原码反码补码

计算机在操作的时候,都是采用数据对应二进制的补码来计算的: 原码 反码 补码 原码:用原码,反码,补码来分别表示+7,和-7. 首先得到7的二进制:111

基础之——原码、反码、补码 详解

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1.机器数 一个数在计算机中的二进制表示形式,  叫做这个数的机器数.机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计