负数在内存中的存储形式——补码
1、数在内存中都已补码形式存在
https://blog.csdn.net/u012511672/article/details/51724272
对于一个负数-x,它的二进制表示(补码)求法如下:
- 求出-x的相反数x的原码
- 对x的原码进行取反运算
- 将取反运算的结果+1
”绕回处理“。
对于大多数语言来说,char类型的有效范围是-128~127,那么如果我们把128这个超过了char类型表示范围的数赋值给一个char型变量ch,结果会怎样呢?ch的值会变成0,还是其它值?答案是,ch的值会变成-128,因为128超越了最大值127,于是它开始从最小值开始,搜索一个合适的位置。同样的道理,将129赋值给ch,ch的值会变成-127。道理就是这样,以此类推。
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.原码.反码.补码 2.大小端介绍 3.浮点型在内存中的存储 一.数据的基本类型介绍 char//字符数据类型 short//短整型 i ...
- 在c语言中 char型数据在内存中的存储形式是,在c语言中char型数据在内存中的存储形式是什么?...
在c语言中char型数据在内存中的存储形式是ASCII码.在C语言中,char型数据是将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单 ...
- 数据在内存中的存储形式
数据的基本类型 一 整形数据 char 字符数据类型,在内存中占一个字节 short 短整型,在内存中占两个字节 int 整形,在16位的平台中占两个字节,在32位平台中占四个字节 long 长整型, ...
- [负数在内存中的存储] 0x80000000 = -2147483648
https://blog.csdn.net/youyou362/article/details/72667951/ 1. 十进制负数以其补码存储在内存上 例子:-8 在内存中表示为:1111 1111 ...
- 字符数据在内存中的存储形式及其使用方法
/*将一个字符常量存放到内存单元时,实际上并不是把该字符本身放到内存单元去,而是将该字符 相应的ASCII代码放到存储单元中.既然字符数据以ASCII代码存储的,他的存储形式就与整数的存储形式类似. ...
- short与int型在内存中的存储形式
int main() { char p[4]={1,2,3,4};cout<<*((short*)p)<<endl;cout<<*((short*)p+1)< ...
- 补码还原为原码c语言,C语言知识汇总 | 12-整数(有、无符号数)在内存中的存储——原码、反码与补码...
加法和减法是计算机中最基本的运算,计算机时时刻刻都离不开它们,所以它们由硬件直接支持.为了提高加减法的运算效率,硬件电路要设计得尽量简单. 对于有符号数,内存要区分符号位和数值位,对于人脑来说,很容易 ...
- 数据存储---整形数据在内存中的存储
我们每一次写代码的时候,都会创建变量.那么所创建的整形变量是如何在内存中存储的呢? 目录 1.数据类型介绍. 2.整形数据在内存中的存储形式. 3.大小端字节序的介绍. 1.数据类型介绍 本文重点介绍 ...
- 【C语言】浮点型数据在内存中的存储方式
目录 一. 前言 二. 问题的引出 三. 两类浮点型数据(float.double)在内存中的存储方式 3.1 两类浮点型数据的存储模型 3.1.1 浮点型数据数值读取的通用模型 3.1.2 floa ...
最新文章
- vs2017python找不到包_关于Python在VS2017版中编译C源代码出现的各种问题解决方法...
- 国际青年日,神策数据召唤优(有)质(志)青年
- C++lowest common ancestor最近公共祖先算法(附完整源码)
- 正确入门Service Mesh:起源、发展和现状
- c mysql 查询超时设置_MySQL查询超时的设置方法
- 一个Linux USB驱动:USB Skeleton driver - 2.0
- html知识管理,index.html
- my04_Mysql复制数据一致性校验
- 触摸屏坏了有哪些现象_手机屏坏了有什么现象
- 蓝桥杯led流水灯实现(38译码器和锁存器的使用)
- 海思Hi3559A Sample_comm_vdec模块解码 视频解码解析
- linux中命令tat,文件管理类命令(ls,tat,glob,cp,touch等)
- #PRBS# PRBS7高速串行总线的常用测试码型
- 天耀18期 – 6.面向对象-类和对象【作业】.
- Material Design专用在线配色工具
- 微信支付 商户号该产品权限未开通,请前往商户平台
- 编程中的逻辑实现,三种逻辑结构(顺序、循环、分支)、跳转、函数以及错误处理
- 笔记本加装内存条,更换散热风扇(以联想y7000为例)
- leetcode五月每日一题 leetcode974
- AD8066ARZ介绍