每当我使用十六进制值时,我都会在脑中或借助转换器将其转换(如果需要)为十进制。我在想,如果你长时间地使用十六进制,你是否会像读十进制数一样“看到”它的值呢?我的意思是,你能否在一段时间后轻松地阅读16进制值,就像阅读10进制值一样?当我编写使用十六进制值的代码时,我这么做是因为它看起来很性感和酷(有时因为8位可以装入两个数字中,这很有帮助),而不是因为我感觉对它们很舒服。这样我就能知道是否有必要尝试去适应十六进制,以便有一天能够轻松地使用它们。
每当我使用十六进制值时,我都会在脑中或借助转换器将其转换(如果需要)为十进制。我在想,如果你长时间地使用十六进制,你是否会像读十进制数一样“看到”它的值呢?我的意思是,你能否在一段时间后轻松地阅读16进制值,就像阅读10进制值一样?当我编写使用十六进制值的代码时,我这么做是因为它看起来很性感和酷(有时因为8位可以装入两个数字中,这很有帮助),而不是因为我感觉对它们很舒服。这样我就能知道是否有必要尝试去适应十六进制,以便有一天能够轻松地使用它们。
不要使用十六进制,因为“它看起来很性感和酷炫(有时是因为8位二进制可以放入两个数字中)”。相反,使用更合适的数字系统。
十六进制在处理二进制位(例如位掩码、标志等)时更为合适,因为它们与二进制密切对应,并且(通过一些练习)您可以快速识别十六进制数中的每个位。
十进制在处理“正常”的现实生活数字时更为合适。
这是一个非常好的问题(给你点赞+1)。个人而言,我使用十六进制来描述颜色,并且已经使用了将近15年 - 现在我可以通过查看十六进制值并说出“那是紫红色”之类的话语来惊艳我的朋友和同事。所以我的想法是,如果你长期以某种方式使用某种方法,你的大脑最终会为你建立这个桥梁。
在处理标志时,我总是使用十六进制。在处理例如字符的代码时,我总是使用十六进制。在处理实际数字时,我根据上下文需要使用十六进制或十进制。
nameGHKKJH = 0x0000000000001;
nameGHKASD = 0x0000000000002;
...
nameGHKASD = 0x0008000000000;
现在将其与以下代码进行比较:
nameGHKKJH = 1 << 0;
nameGHKASD = 1 << 1;
...
nameGHKASD = 1 << 27; - Hamish Grubijan我认为你不需要只是为了练习而练习使用十六进制数。如果你有一场考试需要知道十六进制数,那就练习吧。如果你正在面试一个可能需要处理协议字段或在寄存器中设置位的工作,那么就练习吧。
如果你在日常编码中经常使用十六进制数,你最终会获得你想要的技能。如果你不经常使用它们,那么你可能不需要这些技能。我不会强迫你去练习。
很多年前,我主要使用汇编语言工作,并决定需要学习十六进制的基本知识(乘法和加法表)。于是我写了几张图表贴在墙上开始学习。我的经理路过,问我那是什么,然后告诉我去买一个十六进制计算器!我从未学会那些知识,但我觉得在那种情况下这样做是个好主意。而且我认为这也不难。
话虽如此,我同意其他答案 - 在正确的上下文中使用十六进制,主要目标应该是使代码易于理解。
有趣的是,八进制系统是由瑞典国王查尔斯十二世发明的,他本打算强制全国使用,但两年后不幸去世了。
对不起,我太过于极客了。
我必须为你做这个。
这是一个我写的小型JavaScript游戏,旨在帮助您熟练掌握十六进制。
是的,你可以作弊,但那并不是重点!
如果你长时间使用十六进制,最终你会习惯它的,没错。就像你小时候习惯了十进制一样。只是当你因为“π不等于3.243f6a88…”之类的原因挂科数学课时,请不要抱怨。
此外,@oefe,在处理“普通”的现实生活中的数字时,十进制并不更合适,只是更受欢迎而已。
好问题!
我认为以Phinary的方式思考http://en.wikipedia.org/wiki/Golden_ratio_base
但说真的,我有一位建筑教授,他不需要反汇编器,只需要一个十六进制编辑器 :)