社区
C语言
帖子详情
关于内存里的补码和负整数之间的相互转换问题
大扣子
2011-11-23 01:26:37
十进制负整数转变为 内存里的补码的方法是 求原码的反码再加1得出补码
那内存里的补码转变为十进制负整数的方法,为什么是先求补码的反码再减1,而不是先减1再求反码得出原码(这样子才是根据负数到补码的反过来算啊)
求个详细解释啊大虾们。。非常感谢。
...全文
98
4
打赏
收藏
关于内存里的补码和负整数之间的相互转换问题
十进制负整数转变为 内存里的补码的方法是 求原码的反码再加1得出补码 那内存里的补码转变为十进制负整数的方法,为什么是先求补码的反码再减1,而不是先减1再求反码得出原码(这样子才是根据负数到补码的反过来算啊) 求个详细解释啊大虾们。。非常感谢。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
大扣子
2011-11-23
打赏
举报
回复
[Quote=引用 2 楼 goldbeef 的回复:]
(一)假如一个整数x用n位表示,则所求补码的二进制值是:(1)x>=0 [x]补=x;(2)x<=0,[x]补=2^n-|x|,
说明|x|是x的绝对值的意思
假设n是8,即整数用八位表示, [3]补=0000 0011 ;
[-3]补=2^8-|-3|,又因为2^8=1111 1111 + 1; 3=0000 0011;所以2^8-|-3|相当于1111 1111 -0000 001……
[/Quote]
哈哈真没明白,同样感谢。
大扣子
2011-11-23
打赏
举报
回复
[Quote=引用 1 楼 lida2003 的回复:]
可以看看这个和引用的资料。
http://blog.csdn.net/lida2003/article/details/6973469
[/Quote]
非常感谢,你写的资料我先收藏了。
goldbeef
2011-11-23
打赏
举报
回复
(一)假如一个整数x用n位表示,则所求补码的二进制值是:
(1)x>=0 [x]补=x;(2)x<=0,[x]补=2^n-|x|,
说明|x|是x的绝对值的意思
假设n是8,即整数用八位表示, [3]补=0000 0011 ;
[-3]补=2^8-|-3|,又因为2^8=1111 1111 + 1; 3=0000 0011;所以2^8-|-3|相当于1111 1111 -0000 0011 +1,即各位取反再加1
(二)补码转化为整数,根据(一)的公式很容易得到(
1)x>=0 x=[x]补;(2)x<=0,|x|=2^n-[x]补,==>x=-|x|
由补码判断整数是正数还是负数只需看其最高位是0(则是正数)还是1(则是负数),例子如下
a,[x]补=0000 0011,最高位是0,则是正数,所有根据x>=0 x=[x]补=0000 0011=3;
b,[x]补=1111 1101,最高位是1,则是负数,
根据x<=0,|x|=2^n-[x]补,==>x=-|x|=-(1111 1111-1111 1101 +1)=-3
LZ明白了吧,哈哈
lida2003
2011-11-23
打赏
举报
回复
可以看看这个和引用的资料。
http://blog.csdn.net/lida2003/article/details/6973469
JavaSE基础视频精讲①:环境配置和二进制
转换
本课程适用于零基础小白快速入门Java语言技术,通过课程学习可以清晰了解Java开发的环境配置和二进制
转换
。课程配套完整的(笔记+代码+作业)课程主要分为:1.软件开发的常识2.Java语言的简介3.Java程序开发前的准备工作4.Java程序的运行机制5.第一个Java程序6.注释的使用7.Java编码规范8.API文档的简单使用9.关键字和标识符10.进制的相关概念11.进制
之间
的
相互
转换
112.进制
之间
的
相互
转换
213.原码反码以及
补码
深度剖析
整数
在
内存
中存储的
问题
前言 我们都知道
整数
在
内存
的存储方式是以
补码
的形式存储的。但是具体存储的细节是如何的呢? 还有
整数
相关的一些源码反码
补码
,
问题
,一些字大小端的
问题
,一些数据为什么明明是
负
数,却输出时候是正数…等一系列的
问题
,都在这
里
会解决。 文章目录前言变量类型
整数
的原反
补码
的理解整形存储的本质 变量 ????????????这
里
引出三个
问题
: 什么是变量? 变量用来做什么? 为什么需要定义变量? 可能大家都没想过这个
问题
: ????什么是变量? 答: 变量就是在
内存
中的某一个位置开辟的一段空间。具体在哪个位
原码、反码、
补码
之间
的关系
原码、反码、
补码
之间
的关系 原码、反码、
补码
计算机中的有符号数有三种表示方法,即原码、反码和
补码
。 三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“
负
”,而数值位三种表示方法各不相同。 原码 直接将二进制按照正
负
数的形式翻译成二进制就可以。 反码 将原码的符号位不变,其他位依次按位取反就可以得到了
补码
反码+1就得到
补码
。 注意:正数的原、反、
补码
都相同。 对于整形来说:数据存放
内存
中其实存放的是
补码
。 在计算机系统中,数值一律用
补码
来表示和存储。原因在于,使用
补码
,可以将符号
c语言中的原码,反码,
补码
,
相互
转换
,及数字的溢出情况
文章目录 基本知识引入 一、原码 二、反码 三、
补码
四、
相互
转化 五、数字的溢出 基本知识引入 在基本整型(int型)数据中,在输入一个数字后,编译器会分配给字节去存储到存储单元中。在存储单元
里
中的存储方式是,用
整数
的
补码
(omplemenl)形式存放。 1个正数的
补码
是此数的二进制形式 如果是一个
负
数,则应先求出
负
数的
补码
。 求
负
数的
补码
的方法是:先将此数的绝对值写成二进制形式,然后对其后面所有 各二进位按位取反,再加1 提示:以下是本篇文章正文内容,下面案例可供参考...
计算机
补码
形式存放数据怎么计算最大值,
补码
反码在
内存
的存放
问题
计算机存储的是
补码
计算机只认
补码
,按照
补码
形式计算原码是给人看的,按照我们的理解而存在着反码是为了求
补码
而引出的概念,正数的反码
补码
原码相同,都是本身
负
数的
补码
等于反码加上1, 原码反过来又等于
补码
的反码加1 ,在
补码
与原码的
转换
中理解人与计算机的交流求反码原则:最高位为符号位,求反时符号位不变,其它各位按位取反,反码和求取反是两个概念 ~:按位取反 0000 0001 取反后1111 1110...
C语言
69,369
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章