大胖的部落格
Just a note
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
<
2009年6月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Algorithm(13)
(rss)
C#(13)
(rss)
C++(22)
(rss)
Design Pattern(23)
(rss)
Others(14)
(rss)
STL(9)
(rss)
Technical(2)
(rss)
UML(2)
(rss)
Win32(18)
(rss)
Reference
Windows XP command line
最新评论
1. re: 在TCL命令行中调用C函数
@Kenny
实在不好意思,时间太过久远,本人已好久没有接触TCL……
--大胖
2. re: 在TCL命令行中调用C函数
請問如何溝通array 變數
Q:1
tcl array in C
Q:2
C array in tcl
懇求指導
--Kenny
3. re: 在TCL命令行中调用C函数
谢谢!
--1232
二进制
输出一个数的二进制表示:
从最高位开始,依次输出。
//
输出n的二进制表示
void
BinaryPrint(
int
n)
{
for
(
int
i
=
0
; i
<
32
;
++
i)
{
cout
<<
((n
&
0x80000000
)
==
0x80000000
);
n
=
n
<<
1
;
}
cout
<<
endl;
}
输出一个数二进制表示中1的个数:
n&(n-1)把n的最后一个变为0,因为n-1会使n最后一个1变为0,这个1后面的0变为1。
//
判断n有多少位是1
int
CheckBits(
int
n)
{
int
ret
=
0
;
while
(
0
!=
n)
{
n
=
n
&
(n
-
1
);
++
ret;
}
return
ret;
}
判断一个数是否为2的某次方:
特征:二进制表示中只有一位是1,其余为0。
n-1取反,为-n;若只有一位是1,则n-1后,该位之前的不变,后面位都与之前相反。
//
判断n是否为2的某次方
bool
CheckLog2(
int
n)
{
return
(n
&
(
-
n))
==
n;
}
利用类模板编译期求值优化二进制输出:
首先1字节对齐,每个struct包含两个成员,本位的值和下一位的struct,最后一个struct的本位值为0,这样data<32>就包含了33个字节,从最高位到最低位,还有个0。
将data<32>解释成为一个字符串输出,即为结果。
#include
<
iostream
>
//
1字节对齐
#pragma pack( push )
#pragma pack(
1
)
//
类模板
template
<
int
num ,
int
x
>
struct
data
{
data():c(enumData)
{}
enum
{ enumData
=
(x
&
0x80000000
)
?
'
1
'
:
'
0
'
}
;
char
c;
//
本位
data
<
(num
-
1
), (x
<<
1
)
>
SubData;
//
下一位
}
;
//
类模板特化
template
<
int
x
>
struct
data
<
0
,x
>
{
char
c;
//
以0为结尾
data():c(
0
)
{}
}
;
#pragma pack( pop )
int
main()
{
data
<
32
,
0x80000011
>
temp;
printf(
"
%s\n
"
,
&
temp);
std::cout
<<
sizeof
(data
<
6
,
-
4
>
)
<<
std::endl;
//
7
return
0
;
}
posted on 2009-06-22 14:44
大胖
阅读(483)
评论(0)
编辑
收藏
引用
所属分类:
Algorithm
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
尾递归
链表操作
哈希表
内部排序算法
数据结构 ---- 堆栈
数据结构 ---- 队列
数据结构 ---- 线性表
数据结构 ---- 单向链表
字符串逆转
计算n!的位数
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 大胖