1
holmesabc 2014-10-13 09:23:42 +08:00
没有这种问题.
看需求了。 socket这一类的东西,直接面向byte的,可能就是hex 其它的一般还是10进制 |
2
sunocean 2014-10-13 09:25:45 +08:00
没什么区别 ,编译器处理后计算机看到的都是二进制。这么写估计在直接操作寄存器,方便阅读和改错。
|
3
fising 2014-10-13 09:33:06 +08:00
更好的可读性。
|
4
niboy 2014-10-13 09:37:17 +08:00
有时候会用到位操作?与或操作标志位方便。0x00000001,0x00000010,0x00000100,这种?
|
5
hekunhotmail 2014-10-13 09:47:03 +08:00
socket 自定义协议时,会更方便。
|
6
hekunhotmail 2014-10-13 09:47:36 +08:00
我指得是表示更直观。
|
8
nybux 2014-10-13 09:52:25 +08:00
如果是属性的话,经常会有or的操作。
比如什么属性|什么属性 写成16进制,就很容易辨识位的冲突,或者只标识一个位 比如0x0100 0x0200 0x0400 0x800,如果见到0x0600,你知道有2位可能写错了 如果10进制,给你看1536就不清楚里面bit的情况了 |
9
semicircle21 2014-10-13 10:03:51 +08:00 1
在需要 或操作的时候会这样, 容易看清 究竟哪些位被置位了.
比如 0x730, 容易用肉眼分辨出 0x400, 0x200, 0x100, 0x020, 0x010 这些位生效了. 如果给你 0x730 = 1840, 反应不出哪些位被置了. 如果不需要或操作的情况下, 或者说不是属性的含义, 仅仅是分类的意义, 用 1,2,3,4 也很常见. |
10
dychenyi 2014-10-13 10:06:14 +08:00 via Android
定义宏之类的,可以非常容易看出来,有时候属性要与和或,十进制很难算,要么就2进制,不过太长了。
|
11
withrock 2014-10-13 10:27:17 +08:00
因为可以把它们组合起来。
|
12
tempask 2014-10-13 10:42:20 +08:00
很可能这个常量常用于各种位操作,因此这样声明看起来更加清楚直接,否则你写成10进制,在用的地方看起来会比较费劲
|
13
233 2014-10-13 13:29:17 +08:00
用于位操作吧,尤其驱动相关代码这种情况更多
A = 0x0001 B = 0x0002 C = 0x0004 D = 0x0008 |
14
jemyzhang 2014-10-13 13:53:34 +08:00
肯定是嵌入式C程序员写的,哈哈~硬件操作必须的
|
18
Mutoo 2014-10-13 16:58:20 +08:00
这没什么,我还喜欢写成这样呢
A = 1<<0; B = 1<<1; C = 1<<2; D = 1<<3; |
21
WhatIf 2014-10-14 05:56:31 +08:00 via Android
因为对人脑来说2进制到16进制的互转比2进制到10进制的互转来得直接。你完全可以用10进制来写,但是每次阅读代码还费劲思考也是一个什么值,多累
|