1、数在内存中都已补码形式存在

https://blog.csdn.net/u012511672/article/details/51724272

对于一个负数-x,它的二进制表示(补码)求法如下:

  1. 求出-x的相反数x的原码
  2. 对x的原码进行取反运算
  3. 将取反运算的结果+1

”绕回处理“

对于大多数语言来说,char类型的有效范围是-128~127,那么如果我们把128这个超过了char类型表示范围的数赋值给一个char型变量ch,结果会怎样呢?ch的值会变成0,还是其它值?答案是,ch的值会变成-128,因为128超越了最大值127,于是它开始从最小值开始,搜索一个合适的位置。同样的道理,将129赋值给ch,ch的值会变成-127。道理就是这样,以此类推。

还有一个原理就是有符号和无符号数据的区别。我们知道,char也分为signed和unsigned两种,前者是默认值,而后者的表示范围是0~255。不管有无符号,这个区间的大小都是256,这也在情理之中,毕竟1个字节由8个位组成,每个位可以取0或1,那么一共就能表示2^8种不同的情况,2^8就是256。
同时,根据上面的理论,我们可以得出,将255赋值给ch,结果是-1。我们可以分别求出255和-1的补码,它们都是11111111。当然,这不是什么巧合,这是有科学道理的。255是unsigned char的最大值,它也是signed char能表示的负数中的最大值。当一个char是unsigned类型的时候,它的第一位自然不会被认为是符号位,所以11111111能表示255,而当这个char是signed类型时,第一位被解析成符号位,结果就是-1了。


2、对绕回和同余的解释

https://www.cnblogs.com/zengguowang/p/6074845.html

-336的无符号整数是65200呢?书上说是2的补码(书中描述):数字0到32767代表它们本身,而数字32768到65535则代表负数,65535代表-1,65534代表-2,依次类推,因此-336由65536-336,也即65200来表示;

3、参考知乎答案:同余


作者:知乎用户
链接:https://www.zhihu.com/question/28685048/answer/41735701
来源:知乎

很多人并不理解补码。补码就是同余啊。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个数的方案。要求作加减乘运算的时候,可以直接把编码当正整数算,能得到正确结果。

4、8位有符号数的列表   内存中8位二进制10000000表示 -128

作者:赵德顺
链接:https://www.zhihu.com/question/28685048/answer/340447990
来源:知乎

-1<--->11111111

-2<--->11111110

-3<--->11111101

-4<--->11111100

-5<--->11111011

-6<--->11111010

-7<--->11111001

-8<--->11111000

-9<--->11110111

-10<--->11110110

-11<--->11110101

-12<--->11110100

-13<--->11110011

-14<--->11110010

-15<--->11110001

-16<--->11110000

-17<--->11101111

-18<--->11101110

-19<--->11101101

-20<--->11101100

-21<--->11101011

-22<--->11101010

-23<--->11101001

-24<--->11101000

-25<--->11100111

-26<--->11100110

-27<--->11100101

-28<--->11100100

-29<--->11100011

-30<--->11100010

-31<--->11100001

-32<--->11100000

-33<--->11011111

-34<--->11011110

-35<--->11011101

-36<--->11011100

-37<--->11011011

-38<--->11011010

-39<--->11011001

-40<--->11011000

-41<--->11010111

-42<--->11010110

-43<--->11010101

-44<--->11010100

-45<--->11010011

-46<--->11010010

-47<--->11010001

-48<--->11010000

-49<--->11001111

-50<--->11001110

-51<--->11001101

-52<--->11001100

-53<--->11001011

-54<--->11001010

-55<--->11001001

-56<--->11001000

-57<--->11000111

-58<--->11000110

-59<--->11000101

-60<--->11000100

-61<--->11000011

-62<--->11000010

-63<--->11000001

-64<--->11000000

-65<--->10111111

-66<--->10111110

-67<--->10111101

-68<--->10111100

-69<--->10111011

-70<--->10111010

-71<--->10111001

-72<--->10111000

-73<--->10110111

-74<--->10110110

-75<--->10110101

-76<--->10110100

-77<--->10110011

-78<--->10110010

-79<--->10110001

-80<--->10110000

-81<--->10101111

-82<--->10101110

-83<--->10101101

-84<--->10101100

-85<--->10101011

-86<--->10101010

-87<--->10101001

-88<--->10101000

-89<--->10100111

-90<--->10100110

-91<--->10100101

-92<--->10100100

-93<--->10100011

-94<--->10100010

-95<--->10100001

-96<--->10100000

-97<--->10011111

-98<--->10011110

-99<--->10011101

-100<--->10011100

-101<--->10011011

-102<--->10011010

-103<--->10011001

-104<--->10011000

-105<--->10010111

-106<--->10010110

-107<--->10010101

-108<--->10010100

-109<--->10010011

-110<--->10010010

-111<--->10010001

-112<--->10010000

-113<--->10001111

-114<--->10001110

-115<--->10001101

-116<--->10001100

-117<--->10001011

-118<--->10001010

-119<--->10001001

-120<--->10001000

-121<--->10000111

-122<--->10000110

-123<--->10000101

-124<--->10000100

-125<--->10000011

-126<--->10000010

-127<--->10000001

-128<--->10000000 在这里

127<--->01111111

126<--->01111110

125<--->01111101

124<--->01111100

123<--->01111011

122<--->01111010

121<--->01111001

120<--->01111000

119<--->01110111

118<--->01110110

117<--->01110101

116<--->01110100

115<--->01110011

114<--->01110010

113<--->01110001

112<--->01110000

111<--->01101111

110<--->01101110

109<--->01101101

108<--->01101100

107<--->01101011

106<--->01101010

105<--->01101001

104<--->01101000

103<--->01100111

102<--->01100110

101<--->01100101

100<--->01100100

099<--->01100011

098<--->01100010

097<--->01100001

096<--->01100000

095<--->01011111

094<--->01011110

093<--->01011101

092<--->01011100

091<--->01011011

090<--->01011010

089<--->01011001

088<--->01011000

087<--->01010111

086<--->01010110

085<--->01010101

084<--->01010100

083<--->01010011

082<--->01010010

081<--->01010001

080<--->01010000

079<--->01001111

078<--->01001110

077<--->01001101

076<--->01001100

075<--->01001011

074<--->01001010

073<--->01001001

072<--->01001000

071<--->01000111

070<--->01000110

069<--->01000101

068<--->01000100

067<--->01000011

066<--->01000010

065<--->01000001

064<--->01000000

063<--->00111111

062<--->00111110

061<--->00111101

060<--->00111100

059<--->00111011

058<--->00111010

057<--->00111001

056<--->00111000

055<--->00110111

054<--->00110110

053<--->00110101

052<--->00110100

051<--->00110011

050<--->00110010

049<--->00110001

048<--->00110000

047<--->00101111

046<--->00101110

045<--->00101101

044<--->00101100

043<--->00101011

042<--->00101010

041<--->00101001

040<--->00101000

039<--->00100111

038<--->00100110

037<--->00100101

036<--->00100100

035<--->00100011

034<--->00100010

033<--->00100001

032<--->00100000

031<--->00011111

030<--->00011110

029<--->00011101

028<--->00011100

027<--->00011011

026<--->00011010

025<--->00011001

024<--->00011000

023<--->00010111

022<--->00010110

021<--->00010101

020<--->00010100

019<--->00010011

018<--->00010010

017<--->00010001

016<--->00010000

015<--->00001111

014<--->00001110

013<--->00001101

012<--->00001100

011<--->00001011

010<--->00001010

009<--->00001001

008<--->00001000

007<--->00000111

006<--->00000110

005<--->00000101

004<--->00000100

003<--->00000011

002<--->00000010

001<--->00000001

000<--->00000000

负数在内存中的存储形式——补码相关推荐

  1. 深度分析数据在内存中的存储形式

    文章目录 一.数据的基本类型介绍 二.整型在内存中的存储形式 1.原码.反码.补码 2.大小端介绍 3.浮点型在内存中的存储 一.数据的基本类型介绍 char//字符数据类型 short//短整型 i ...

  2. 在c语言中 char型数据在内存中的存储形式是,在c语言中char型数据在内存中的存储形式是什么?...

    在c语言中char型数据在内存中的存储形式是ASCII码.在C语言中,char型数据是将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单 ...

  3. 数据在内存中的存储形式

    数据的基本类型 一 整形数据 char 字符数据类型,在内存中占一个字节 short 短整型,在内存中占两个字节 int 整形,在16位的平台中占两个字节,在32位平台中占四个字节 long 长整型, ...

  4. [负数在内存中的存储] 0x80000000 = -2147483648

    https://blog.csdn.net/youyou362/article/details/72667951/ 1. 十进制负数以其补码存储在内存上 例子:-8 在内存中表示为:1111 1111 ...

  5. 字符数据在内存中的存储形式及其使用方法

    /*将一个字符常量存放到内存单元时,实际上并不是把该字符本身放到内存单元去,而是将该字符 相应的ASCII代码放到存储单元中.既然字符数据以ASCII代码存储的,他的存储形式就与整数的存储形式类似. ...

  6. short与int型在内存中的存储形式

    int main() { char p[4]={1,2,3,4};cout<<*((short*)p)<<endl;cout<<*((short*)p+1)< ...

  7. 补码还原为原码c语言,C语言知识汇总 | 12-整数(有、无符号数)在内存中的存储——原码、反码与补码...

    加法和减法是计算机中最基本的运算,计算机时时刻刻都离不开它们,所以它们由硬件直接支持.为了提高加减法的运算效率,硬件电路要设计得尽量简单. 对于有符号数,内存要区分符号位和数值位,对于人脑来说,很容易 ...

  8. 数据存储---整形数据在内存中的存储

    我们每一次写代码的时候,都会创建变量.那么所创建的整形变量是如何在内存中存储的呢? 目录 1.数据类型介绍. 2.整形数据在内存中的存储形式. 3.大小端字节序的介绍. 1.数据类型介绍 本文重点介绍 ...

  9. 【C语言】浮点型数据在内存中的存储方式

    目录 一. 前言 二. 问题的引出 三. 两类浮点型数据(float.double)在内存中的存储方式 3.1 两类浮点型数据的存储模型 3.1.1 浮点型数据数值读取的通用模型 3.1.2 floa ...

最新文章

  1. vs2017python找不到包_关于Python在VS2017版中编译C源代码出现的各种问题解决方法...
  2. 国际青年日,神策数据召唤优(有)质(志)青年
  3. C++lowest common ancestor最近公共祖先算法(附完整源码)
  4. 正确入门Service Mesh:起源、发展和现状
  5. c mysql 查询超时设置_MySQL查询超时的设置方法
  6. 一个Linux USB驱动:USB Skeleton driver - 2.0
  7. html知识管理,index.html
  8. my04_Mysql复制数据一致性校验
  9. 触摸屏坏了有哪些现象_手机屏坏了有什么现象
  10. 蓝桥杯led流水灯实现(38译码器和锁存器的使用)
  11. 海思Hi3559A Sample_comm_vdec模块解码 视频解码解析
  12. linux中命令tat,文件管理类命令(ls,tat,glob,cp,touch等)
  13. #PRBS# PRBS7高速串行总线的常用测试码型
  14. 天耀18期 – 6.面向对象-类和对象【作业】.
  15. Material Design专用在线配色工具
  16. 微信支付 商户号该产品权限未开通,请前往商户平台
  17. 编程中的逻辑实现,三种逻辑结构(顺序、循环、分支)、跳转、函数以及错误处理
  18. 笔记本加装内存条,更换散热风扇(以联想y7000为例)
  19. leetcode五月每日一题 leetcode974
  20. AD8066ARZ介绍

热门文章

  1. java多线程并发基础汇总一
  2. Python用tushare库获取股票数据批量存入mysql成功
  3. 第12章实验1:学生成绩管理系统V5.0
  4. pomodoro源码
  5. 三星R463无线网卡驱动,声卡驱动,FN快捷键驱动,Easy_Display_Manager
  6. others-Adjust第三方统计
  7. jssdk 获取微信收货地址_微信公众号JSSDK 获取经纬度
  8. 手机拍证件照有什么诀窍
  9. GOP I帧和IDR帧
  10. Win10软件环境变量配置(配置原因、配置步骤)