社区
C语言
帖子详情
-1(int型)为什么不表示为0x10 00 00 01 ?书上不是说第一个bit是用来表示为正数还是负数的吗?
soarhigh
2005-11-15 12:12:28
按我的想像,
+1为 0x00 00 00 01
-1为 0x10 00 00 01,
但是编译器告诉我
-1是 0xFF FF FF FF.
这是为什么,盼赐教!谢谢!
...全文
714
25
打赏
收藏
-1(int型)为什么不表示为0x10 00 00 01 ?书上不是说第一个bit是用来表示为正数还是负数的吗?
按我的想像, +1为 0x00 00 00 01 -1为 0x10 00 00 01, 但是编译器告诉我 -1是 0xFF FF FF FF. 这是为什么,盼赐教!谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Juchiyufei
2006-03-22
打赏
举报
回复
学习
codearts
2005-11-16
打赏
举报
回复
补码=原码逐位取反再加1(符后位除外)
原码=补码逐位取反再加1(符后位除外)
freecare
2005-11-16
打赏
举报
回复
在计算机进行负数表示时,是这样考虑的(拿1、-1做例子):
1 00...0001
如果把-1直接表示为1的反码11..1110表示的话
两个数相加 00...0001
+11...1110
-----------
11...1111
这样就与1+(-1) = 0想违背,所以考虑用补码进行表示,即用反码加1的形式进行表示;
00...0001
+11...1111
-------------
00...0000
cdo
2005-11-16
打赏
举报
回复
0x是16进制,不是二进制。
屋顶上的老猫
2005-11-16
打赏
举报
回复
搞的我神经错乱,0x表示十六进制!
翻译成原码10 00 00 01(二进制) == 0x81(十六进制)
显示的补码11 11 11 11(二进制) == 0xff(十六进制)
根据操作系统的不同也只是位数上的变化,原理是一样的!
goodluckyxl
2005-11-15
打赏
举报
回复
补码你知道么
不懂就打开计算机原理第一章
kekexili7
2005-11-15
打赏
举报
回复
好深奥阿 看不懂 呵呵
Eastunfail
2005-11-15
打赏
举报
回复
因为-1等于0-1啊
-1的表示就是用0减去1算出来的
你那样表示就不满足这个等式了
DiabloWalkOnTheEarth
2005-11-15
打赏
举报
回复
1 0000xxx 1 是原码表示, 1 111111xxxx 1 是补码表示
xiaosong8584
2005-11-15
打赏
举报
回复
晕 ,
计算机处理浮点数,尾数用补码,阶码用增码,
处理乘除运算源码比较合适,
处理加减运算补码比较好,
至于为什么>
赫赫,不知道
robertxiao
2005-11-15
打赏
举报
回复
0x00 00 00 01
0x10 00 00 01,
这都是十六进制数,不是二进制数。
x86
2005-11-15
打赏
举报
回复
最高位为1表示负数,但是其值为“最大数”与其值的差
elvispl
2005-11-15
打赏
举报
回复
晕,连十六进制和二进制都搞不清楚,0x100000001是十六进制,这个数最高位不是1
yanxiazhiqiu
2005-11-15
打赏
举报
回复
补码就是原码取反+1。
megaboy
2005-11-15
打赏
举报
回复
0就是0x00000000,而-1就是0-1,于是0x00000000-0x00000001等于0xffffffff。
yuanchuang
2005-11-15
打赏
举报
回复
我在上面打错了一个字,补码是反码加1。不好意思。呵呵
yuanchuang
2005-11-15
打赏
举报
回复
详细说来,就是用补码表示,比如在32位系统中,-1原码是:10000000000000000000000000000001,第一位是符号,取反,第一位不变,则结果是:11111111111111111111111111111110,补码是原码加1,等于:11111111111111111111111111111111,转换成16进制(从右往左4位2进制转成1位16进制)便是:
0xFFFFFFFF。
好了,相信你现在已经懂了。
zhflwx
2005-11-15
打赏
举报
回复
计算机中负数是用补码来表示的。补码的算法就是源码取反再加一。非常认同 zeroblock(吉米)的观点。表示成补码就是0xffffffff而不是0xff。
gaoch_2000
2005-11-15
打赏
举报
回复
0xFF FF FF FF这是存储单位里能够存储的最大值,0x10 00 00 01 放不进去。
0
-1 1
-2 2
。。。。。。。。
-127 127
-128
yuanchuang
2005-11-15
打赏
举报
回复
你说得很对,0x是表示16进制,1才是第一位他是表示负的,16进制中没有负数,全是无符号的,最后一个1是他的值
加载更多回复(5)
0x7fffffff是多少(也就是
INT
_MAX,首位是 0,其余都是1,f代表1111, 2的31次方-1)
可以算一下 0x7FFFFFFF是多少 每个十六进制数4
bit
,因此8位16进制是4个字节,刚好是一个
int
整
型
...就是
说
,这是最大的整
型
数
int
(因为第一位是符号位,0
表示
他是
正数
) 用
INT
_MAX 常量可以替代这个值。 ...
0x7fffffff解析
这是最大的整
型
数
int
(因为第一位是符号位,0
表示
他是
正数
) 每个十六进制数占4个
bit
(毕竟16进制最大值是15嘛),一个字节占8位。因此0x7ffffff应该理解为: 0x7f ff ff ff ff,也就是占4个字节,也就
c语言
int
max,C语言 0x7fffffff是多少(也就是
INT
_MAX,首位是 0,其余都是1,f代表1111)...
0x7FFFFFFF是多少每个十六进制数4
bit
,因此8位16进制是4个字节,刚好是一个
int
整
型
F的二进制码为 11117的二进制码为
01
11这样一来,整个整数 0x7FFFFFFF 的二进制
表示
就是除了首位是 0,其余都是1就是
说
,这是最大的...
0x7FFFFFFF 是long
int
的最大值
可以算一下 0x7FFFFFFF 是多少 每个十六进制数4
bit
,因此8位16进制是4个字节,刚好是一个
int
整
型
...就是
说
,这是最大的整
型
数
int
(因为第一位是符号位,0
表示
他是
正数
) 用
INT
_MAX 常量可以替代这个
计算机中的正
负数
表示
在32位系统中,
int
类
型
占4个字节,一共是32个2进制位,
int
类
型
的首位是符号位,0代表
正数
,1代表
负数
,
int
的最大值是0x7fffffff(即除了最高的1
Bit
其他31位都为1),而最小值是0x8
00
00
00
0(除了最高1
bit
,其他31位都...
C语言
69,336
社区成员
243,078
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章