为什么声明常量时候用十六进制?

2014-10-13 09:20:47 +08:00
 thisnull
private static final int XXXX = 0x00000001;

RT?谁能解答,难道只是程序员的喜好.
7802 次点击
所在节点    Java
21 条回复
holmesabc
2014-10-13 09:23:42 +08:00
没有这种问题.
看需求了。
socket这一类的东西,直接面向byte的,可能就是hex
其它的一般还是10进制
sunocean
2014-10-13 09:25:45 +08:00
没什么区别 ,编译器处理后计算机看到的都是二进制。这么写估计在直接操作寄存器,方便阅读和改错。
fising
2014-10-13 09:33:06 +08:00
更好的可读性。
niboy
2014-10-13 09:37:17 +08:00
有时候会用到位操作?与或操作标志位方便。0x00000001,0x00000010,0x00000100,这种?
hekunhotmail
2014-10-13 09:47:03 +08:00
socket 自定义协议时,会更方便。
hekunhotmail
2014-10-13 09:47:36 +08:00
我指得是表示更直观。
thisnull
2014-10-13 09:48:37 +08:00
@niboy 都已经是常量应该不会用位操作吧.
nybux
2014-10-13 09:52:25 +08:00
如果是属性的话,经常会有or的操作。
比如什么属性|什么属性
写成16进制,就很容易辨识位的冲突,或者只标识一个位
比如0x0100 0x0200 0x0400 0x800,如果见到0x0600,你知道有2位可能写错了
如果10进制,给你看1536就不清楚里面bit的情况了
semicircle21
2014-10-13 10:03:51 +08:00
在需要 或操作的时候会这样, 容易看清 究竟哪些位被置位了.
比如 0x730, 容易用肉眼分辨出 0x400, 0x200, 0x100, 0x020, 0x010 这些位生效了.
如果给你 0x730 = 1840, 反应不出哪些位被置了.

如果不需要或操作的情况下, 或者说不是属性的含义, 仅仅是分类的意义, 用 1,2,3,4 也很常见.
dychenyi
2014-10-13 10:06:14 +08:00
定义宏之类的,可以非常容易看出来,有时候属性要与和或,十进制很难算,要么就2进制,不过太长了。
withrock
2014-10-13 10:27:17 +08:00
因为可以把它们组合起来。
tempask
2014-10-13 10:42:20 +08:00
很可能这个常量常用于各种位操作,因此这样声明看起来更加清楚直接,否则你写成10进制,在用的地方看起来会比较费劲
233
2014-10-13 13:29:17 +08:00
用于位操作吧,尤其驱动相关代码这种情况更多
A = 0x0001
B = 0x0002
C = 0x0004
D = 0x0008
jemyzhang
2014-10-13 13:53:34 +08:00
肯定是嵌入式C程序员写的,哈哈~硬件操作必须的
thisnull
2014-10-13 14:02:34 +08:00
@jemyzhang 这是JAVA 写的
thisnull
2014-10-13 14:02:54 +08:00
@233 java写的代码
eslizn
2014-10-13 16:32:53 +08:00
@thisnull 也难怪你会问这种问题,java就不能位操作了?有些逻辑用位操作实现起来比较简单
Mutoo
2014-10-13 16:58:20 +08:00
这没什么,我还喜欢写成这样呢
A = 1<<0;
B = 1<<1;
C = 1<<2;
D = 1<<3;
thisnull
2014-10-13 20:52:17 +08:00
@eslizn 我知道JAVA可以操作位移符, 只是好奇声明常量的时候为何用十六进制的而已.
eslizn
2014-10-13 22:49:29 +08:00
@thisnull 你不觉得十六进制比十进制直观吗? 0xff 就是一个字节

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/138554

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX