补码10000000为什么可以表示-128?
来源:互联网 发布:淘宝优惠券推广图片 编辑:程序博客网 时间:2024/05/16 01:43
一、引言
本文转自知乎上 fhylhl 用户对于此同名问题的解答,本人觉得回答得非常鞭辟入里,因此咨询了作者是否可以转载,得到了肯定的回复后才进行了转载。
另外,什么是补码?补码的设计意义是什么?
让我们忘记公式,来看看作者的回答。
二、正文
很多人并不理解补码。补码就是同余啊。1000000是正128你知道吧,正负128模256是同余的。加减乘可以直接算也是同余的定理决定的,而不是凑出来的巧合,哪可能凑出这种东西?
8位只能表示256个数,0到255,但我还想表示一些负数怎么办呢?就用与该负数同余的正数来表示呗。-1=255,-2=254,等等。
建议脱离算数的思维方式,这其实就是一个环。模任何一个正整数(如256),可以把所有整数分类,比如模256可分256类,0 256 -256…是一类(余0类),1 257 -255…是一类(余1类),等等,这256类可看作环的元素,你看-128和128是同一个类里的(余128类),用一个代表另一个罢了。补码和普通的unsigned integers都是在每类中选一个数,unsigned integers选0到255,补码表示的有符号整数选-128到127,都是一个数恰好对应一个类。
当你明白这一切后,补码就是顺理成章的事。
练习:设计用8位二进制数表示13至268这256个数的方案。要求作加减乘运算的时候,可以直接把编码当正整数算,能得到正确结果。
作者:fhylhl
链接:https://www.zhihu.com/question/28685048/answer/41735701
来源:知乎
1 0
- 补码10000000为什么可以表示-128?
- 为什么补码可以表示负数?
- 为什么补码可以表示负数
- 为什么要用补码表示
- 为什么要用补码表示
- 为什么要用补码表示
- 负数为什么用补码表示
- 8位二进制数能表示的最小整数为什么是-128,10000000为什么是-128的补码。
- 计算中为什么要用补码表示
- 计算机中为什么要用补码表示
- (转)为什么要用补码表示
- -1为什么要用补码表示
- 补码原理——负数为什么要用补码表示
- 为什么计算机中使用补码来表示与运算
- 为什么计算机中使用补码来表示与运算
- 对一个字节表示的补码10000000表示-128的解释
- 光为什么可以用复数表示?
- 光为什么可以用复数表示?
- 态势感知系统,助力网络更安全
- C#获取CPU序列号,MAC地址,硬盘ID,本机IP地址,计算机名,物理内存,PC类型
- 深入jar包:从jar包中读取资源文件
- 发现两个php的配置文件的不同
- 什么是IP 、子网掩码、 网段?
- 补码10000000为什么可以表示-128?
- cocos2D CClayer 6
- Eclipse玩家代码版本管控SVN工具Subclipse的安装与使用
- Hibernate增删改查
- YYHD-工作中一些总结(3)
- spark学习之combineByKey函数
- ubuntu
- 令牌桶算法
- Spark安装