感觉好难,每次遇到进制的转换或者计算都要 Google,特别是 16 进制,你们遇到进制的转换有什么好的方法吗
1
luojianxhlxt 2018-01-27 13:13:05 +08:00 via iPhone
windows 自带的计算器
|
2
loading 2018-01-27 13:13:54 +08:00 via Android
自己算不怕错?
怕丢人就自己写一个计算器… |
3
weiwio 2018-01-27 13:13:54 +08:00 via Android
心算
|
5
chiu 2018-01-27 13:33:15 +08:00 via Android
做底层驱动的,感觉已经习惯了……
|
6
WordTian 2018-01-27 13:34:35 +08:00 via iPhone
计算器 + 1
|
7
congeec 2018-01-27 13:34:42 +08:00
涉及 10 进制我觉得转换比较麻烦。16 进制和 2 进制互转比较简单,有技巧。
话说楼主什么场景下需要转换进制? |
8
Heinz 2018-01-27 13:37:32 +08:00 via iPhone
为了考试,我已经把进制转换练熟了,如果真的有自己算的需求的话,只能说熟能生巧
|
9
Osk 2018-01-27 13:48:44 +08:00 via Android
仅限于 0xFF 以内还勉强能算。。。
|
10
baozijun 2018-01-27 13:54:41 +08:00 via iPhone
推荐 pccal
|
11
maemual 2018-01-27 13:55:09 +08:00
用计算器不丢人。。。
|
12
septet OP @congeec 最近对接一个 API,登录密码、签名验证需要 16 进制和 10 进制的转换和计算,突然发现自己在这一块好难下手。。。
|
13
geelaw 2018-01-27 14:07:11 +08:00 via iPhone
更自然的想法是“寻找一个数在某进制下的字符串形式”,因为进制本身并不是数的属性。
如果是手算,原来的数本身也具有一个表示形式,才有所谓“转换”。如果是计算机运算,你也可以假想数是本来是用二进制表示的,不过这样想的用处不大。 |
15
imdong 2018-01-27 14:22:37 +08:00
Win + Q => calc => 回车
然后选择程序员模式。青石搞定。 |
16
rockyou12 2018-01-27 14:23:41 +08:00 via Android
2 进制转换当然有诀窍,8421,每一位对应一个二进制位。比如二进制 0101 就是 4+1,二进制 1111 就是 8+4+2+1。而且 4 个二进制位刚好就是 16 进制 1 位,所以这也是 16 进制到 2 进制的诀窍
|
17
chenstack 2018-01-27 14:23:43 +08:00
有段时间热衷于 GBA 和 NES 游戏的修改及汉化,经常用到 2 进制和 16 进制,对转换比较敏感。平时转换的话,可以随时调出终端用 python 算,hex, bin 函数很方便
|
18
sunjourney 2018-01-27 14:24:37 +08:00
2,8,16 心算还行
|
19
Building 2018-01-27 14:26:46 +08:00 via iPhone
和正则表达式一样,每用一次都要重新学一次。
|
20
fantasynoff 2018-01-27 14:48:16 +08:00
03E7
270F 98967F 3B9AC9FF 就这些用的多... |
21
5mins 2018-01-27 16:32:53 +08:00
|
22
bramblex 2018-01-27 16:44:03 +08:00
嗯...
其实为啥要进制转换啊,无论 2 / 8 / 16 / 10 都是表示同一个数啊 |
23
geelaw 2018-01-27 16:52:41 +08:00
@septet https://geelaw.blog/entries/rethinking-base-conversion/ 简单来说,变成你会做算术的进制的方法是级数求和(多项式求值,可以用秦九韶方法),从你会做算术的进制变成你不会做算术的进制的方法是反复做带余除法。
如果你用 Windows 的话,在 PowerShell 里直接 (十进制数字).ToString('x') 就得到十六进制的表示,或者 0x 十六进制 就得到了十进制的表示。 @bramblex #22 因为你需要表示一个数,而表示一个数最常见的方法是使用进位制。 |
24
5mins 2018-01-27 16:53:12 +08:00 1
我们将物质的现象跟物质本身区分开来。假设一个数,这个数在十进制里面的表示是:10,在二进制的表示是:1010,十六进制是:A,八进制是:12。一个数可以有不同的表现形式,但这个数本身所代表的是不会随着表现形式的变更而改变的。我理解的数不是一个“数”,会将它想象成数轴上的有限的一段,或者说想象成一段绳子,或者一壶水。用“十进制”的一排杯子(规则)去装这壶水,那看到的就是这壶水在十进制下的表现形式。这样去理解进制转换的话可能会容易理解一点。
|
25
bramblex 2018-01-27 17:02:58 +08:00
@geelaw
运算又不会因为进制不同就产生不同结果,毕竟计算机里存储的都是二进制数。 难道我用不同进制表示一个数,这个数大小就改变了,加减乘除性质就不一样了? 除了输出成字符串用于展示的时候存在意义,其他时候我看不见手动转换进制有任何意义,并且绝大多数语言标准库里都有根据进制输出字符串的函数。 |
26
geelaw 2018-01-27 17:13:45 +08:00 via iPhone
@bramblex 计算机并不一定要用二进制存储一个数。只是你常用(我也常用)那种用二进制存储的计算机。
您后半段论证感觉就是:研究更好的排序算法是没有意义的,因为标准库里有排序算法。 问题的价值在于问题本身,而不是它有什么用。当然这样论证会导致不反对 X-Y 问题,但就这个进位制转换的特殊问题来说,它本身的意义还是很明显的。 |
27
crbee 2018-01-27 17:32:45 +08:00
@fantasynoff 改游戏币么 - -
|
28
iugo 2018-01-27 17:46:20 +08:00
JavaScript 在这种情况还是挺方便的. 浏览器控制台.
``` var num = 999; num.toString(16); ``` |
29
akira 2018-01-27 17:46:43 +08:00
看习惯了就好。
|
30
bramblex 2018-01-27 18:34:44 +08:00
|
31
jason19659 2018-01-27 20:38:02 +08:00
开浏览器写 js。。
|
32
l00t 2018-01-27 21:08:56 +08:00
正整数都还好。遇到负数和浮点数,我有点心累…… 还是直接上计算器吧……
|
33
littlebutt 2018-01-27 21:34:17 +08:00 via iPhone
学生党表示暂时没有压力,不过毕业以后这些东西应该很快会忘掉吧
|
34
koushiro 2018-01-27 21:49:24 +08:00 via Android
写半年底层 不熟也熟了→_→
|
35
gnaggnoyil 2018-01-27 22:12:18 +08:00
@bramblex 然而如果你写过高精度运算库的话就会发现进制转换的问题也是可以很要命的……
|
36
mauve 2018-01-27 22:12:30 +08:00
组成原理基本操作,二进制中转一下,数大一些的需要计算器
|
37
alcarl 2018-01-27 22:21:46 +08:00 via Android
随便算算就用计算器,近期老用就用 perl python 啥的写几段代码来转换
|
38
cppgohan 2018-01-27 23:53:51 +08:00
大一学计算机导论, oct, hex, binary 似乎都覆盖了.. 感觉进制转换谈不上"原理", 值不变, 只是表示的方式不同
当然最快还是 win10 的计算器. |
39
bramblex 2018-01-28 02:14:37 +08:00
|
40
rexyan 2018-01-29 17:42:01 +08:00
来几遍子网掩码,坨坨的
|