(DWORD)-1等于多少?

wcg_jishuo1 2010-11-11 11:10:56
(DWORD)-1等于多少?等于FFFFFFFF
(BYTE)-1等于多少?等于FF
(DWORD)+1等于 1
那DWORD的值到底是多少啊?
...全文
985 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
半斗 2010-11-11
  • 打赏
  • 举报
回复
DWORD占4字节,一种类型而已
luciferisnotsatan 2010-11-11
  • 打赏
  • 举报
回复
0xFFFFFFFF

DWORD是类型。
(DWORD)-1这是把 -1 强转 DWORD
(DWORD)+1 这是把 +1(这里 + 代表 正号 )强转 DWORD
無_1024 2010-11-11
  • 打赏
  • 举报
回复
dword的值为0
xuwening 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lightboat09 的回复:]

内存初始化应该是0
[/Quote]

恩~~~~~~~
0xFFFFFFFF的值就是-1
dword - 1 == -1
dword + 1 == 1

所以dword == 0
小楫轻舟 2010-11-11
  • 打赏
  • 举报
回复
内存初始化应该是0
wcg_jishuo1 2010-11-11
  • 打赏
  • 举报
回复
所以的计算机里存储或者运算的都是补码。
为什么要用补码呢,这个可以看计算机历史啦。
-1的补码是 反码加1 即FF FF FF FF.
bluesky12312388 2010-11-11
  • 打赏
  • 举报
回复
看它所表示的类型不同而不同。在32位64位机上是不同的。
本质上unsigned long = DWORD,也是就说不论你怎么赋值它也会是正数。
值为 右值 % ( 2*2(有DWORD位个2) + 1)
liups 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wcg_jishuo1 的回复:]
typedef unsigned long DWORD;
DWORD是无符号说。-1 强制转换成无符号数后变成了FF FF FF FF

-1 用无符号数表示 为什么会是FF FF FF FF 呢?
DDWORD的范围 0 至(2^64-1)如果-1 怎么表示呢?如果是表示成 FF FF FF FF ,那为什么要这样表示呢?
[/Quote]
看一下补码,所有的补码中-1各位(含符号位)全部是1,所以(32位的二进制)表示成16进制就是 FF FF FF FF
luciferisnotsatan 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wcg_jishuo1 的回复:]

typedef unsigned long DWORD;
DWORD是无符号说。-1 强制转换成无符号数后变成了FF FF FF FF

-1 用无符号数表示 为什么会是FF FF FF FF 呢?
DDWORD的范围 0 至(2^64-1)如果-1 怎么表示呢?如果是表示成 FF FF FF FF ,那为什么要这样表示呢?
[/Quote]

DDWORD就是 FF FF FF FF FF FF FF FF。
wcg_jishuo1 2010-11-11
  • 打赏
  • 举报
回复
typedef unsigned long DWORD;
DWORD是无符号说。-1 强制转换成无符号数后变成了FF FF FF FF

-1 用无符号数表示 为什么会是FF FF FF FF 呢?
DDWORD的范围 0 至(2^64-1)如果-1 怎么表示呢?如果是表示成 FF FF FF FF ,那为什么要这样表示呢?
dinjay 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wcg_jishuo1 的回复:]

-1 在内存中是FF FF FF FF (有符号时) -1 为什么在计算机内存里表示是 FF FF FF FF FF?
[/Quote]
有符号当然要存储符号位了
wcg_jishuo1 2010-11-11
  • 打赏
  • 举报
回复
-1 在内存中是FF FF FF FF (有符号时) -1 为什么在计算机内存里表示是 FF FF FF FF FF?
zhutianjin4355255 2010-11-11
  • 打赏
  • 举报
回复
0xFFFFFFFF的值就是-1
dword - 1 == -1
dword + 1 == 1

dword == 0
lhy 2010-11-11
  • 打赏
  • 举报
回复
DWORD是类型不是常量。
pitchstar 2010-11-11
  • 打赏
  • 举报
回复
unsigned long 在32位平台上是 8 字节?
十八道胡同 2010-11-11
  • 打赏
  • 举报
回复
typedef unsigned long DWORD; 而unsigned long 的长度则是8个字节即64位,如果是在64位的操作系统中,这个长度可能会更长,这需要取决于当前操作系统以及开发环境等有关方面,具体可以参考相关的帮助说明!

是无符号类型。强制类型转换时按bit来转换。
-1 在内存中是FF FF FF FF (有符号时) ,所以强制类型转换成DWORD就是FF FF FF FF
gules 2010-11-11
  • 打赏
  • 举报
回复
参考《CSAPP》的第二章吧,就在这个论坛的置顶的帖子里。
gundamy 2010-11-11
  • 打赏
  • 举报
回复
可以看下反码、补码之类的知识,你就知道了
wcg_jishuo1 2010-11-11
  • 打赏
  • 举报
回复
(DWORD)-1这是把 -1 强转 DWORD
怎么算?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧