0开头 八进制 064
0b开头 二进制 0b00110100
转换后得到的十进制是 52
进制转换
0b00110100 转换十进制
二进制数的第0位的权值是2的0次方,第一位的权值是2的1次方......
0x34 转换十六进制
16进制就是每逢16就进1, A,B,C,D,E,F 对应表示 10,11,12,13,14,15 不区分大小写
34 十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。
合起来就是 00110100 前面补充2个0
064 八进制就是每逢8进1 八进制数采用0~7来表示一个数
64 八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。
合起来就是 00110100 前面补充2个0
52
除以2取余数
001011 反过来 = 110100
结果就是 00110100 前面补充2个0
52
除以16取余数
300
除以16取余数
虽然你没有说要做什么,但我猜你在编程做音乐,你的数字代表的是各音阶的频率(频率是对机器来说的,而不是音阶的真实频率)。
0x打头的数字,是16进制。
0x14 换算成10进制,是 20
0x34 换算成10进制,是 52
0x54 换算成10进制,是 84
彼此相差32,
以此类推……
但是,根据你的举例,0x74是音阶4(发),
那么音阶5(骚)应该是0x94才对,你的列表(0x98)明显不是,跟规律值差了4.
0xb1跟0x98差了25,不是前几个音阶的差值(32)。
这就有点奇怪了。
为什么前几个音阶差的值是等值的插,到了5和6的差值就不正常了?
我猜想这个可能是为了音阶补偿,到了高音部就不能等差值了,这样人耳听起来才更自然。
但是这样的话就不能确定7是多少了,建议你在0xca左右取值。(在16进制里,c代表12,a代表10,0xca换算成十进制是202)
下图是电子琴中各音阶的实际频率,请看中音部分,我画红框的部分。
我对音乐之类的不太熟,你感兴趣可以自己算一算实际频率和你所列的16进制频率之间的关系。
我粗看了一下,两者关系不是线性的,不太好算。
建议你把程序写出来,用耳朵听,找一个最适合的数字。(其实0xca差不多,一般人听不出来就行了)
欢迎分享,转载请注明来源:优选云