c++初级问题

supercrsky1 2009-02-19 10:45:38
本人初学C++,在<<C++ Primer>>中有这么一段"在32位unsigned long 的机器上,十六进制值0xffff表示二进制位就是十六个一和十六个0(每个0xf可表示为1111).可以用0xffff初始化bitset对象"

请问0xffff 到二进制 十六个一和十六个0是怎么算的? 谢谢.
...全文
92 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
juniosan01 2009-02-19
  • 打赏
  • 举报
回复
16位机0xffff是1111 1111 1111 1111
32位机0xffff应该是0x0000ffff即0000 0000 0000 0000 1111 1111 1111 1111
supercrsky1 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 huayehanshan 的回复:]
呵呵,脑子不转了。32位机,0xffff前面补零即是0x0000ffff。
[/Quote]

一语中的.
waizqfor 2009-02-19
  • 打赏
  • 举报
回复
请问0xffff 到二进制 十六个一和十六个0是怎么算的? 谢谢.

这个就是 16进制 转换成 2进制啊 没什么别的问题吧
如果你是用32位表示的话 在没有转换的地方补0 就可以了啊
转换是从低位到高位的转换
0xffff转换完即是0x0000ffff 不够位数补0
camelisi 2009-02-19
  • 打赏
  • 举报
回复
三楼正解
叶落寒山 2009-02-19
  • 打赏
  • 举报
回复
呵呵,脑子不转了。32位机,0xffff前面补零即是0x0000ffff。
  • 打赏
  • 举报
回复
请问0xffff 到二进制 十六个一和十六个0是怎么算的? 谢谢.
没看懂楼主的问题。
0xffff转为2进制不就是16个1吗?你想问什么?bitset规定先从低位开始赋值。
叶落寒山 2009-02-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 supercrsky1 的帖子:]
本人初学C++,在 < <C++ Primer>>中有这么一段"在32位unsigned long 的机器上,十六进制值0xffff表示二进制位就是十六个一和十六个0(每个0xf可表示为1111).可以用0xffff初始化bitset对象"

请问0xffff 到二进制 十六个一和十六个0是怎么算的? 谢谢.
[/Quote]

0xffff 就是表示二进制十六个一吧。没有说是十六个一和十六个0呀,我觉得是是笔误。至于有什么其他的解释,期待大家的讨论。
yellowhwb 2009-02-19
  • 打赏
  • 举报
回复
16进制 2进制
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

32位的数据x 0xffff就是4个byte的数据0x0000ffff
按照上面的数据拼一下,得到2进制的00000000000000001111111111111111
supercrsky1 2009-02-19
  • 打赏
  • 举报
回复

#include <bitset>
#include <iostream>

using std::bitset;
using std::cout;
using std::endl;

int main()
{
bitset<16> bitvec1(0xffff);
cout << bitvec1;
return 0;
}


supercrsky1 2009-02-19
  • 打赏
  • 举报
回复
ffff == f * 16^3 + f * 16^2 + f * 16^1 + f * 16^0 = 65535; 十进制
一个 f = 1111 四个f = 1111,1111,1111,1111

但书上为什么说表示十六个一和十六个0呢?

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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