“3的补码是0000011.所以移码就是10000011”只是移码的概念,有人称为符号位取反的补码。但在表示float数中的阶码时,为了某种需要,是将求得的移码减去127记录的,就是说表示一个单精度浮点数的阶码是真正的移码-127的值,所以真正计算时要加上127。而要是bouble型浮点数就得加上1023了移码!所以“3的补码是0000011.所以移码就是10000011”和“移码就是127+3=130.所以是10000010”都是对的,只是这里还有点“一般”与“具体”的关系你不知道而已:前者是移码概念,后者是用移码表示浮点数阶码的具体方法。
真值:现实中真实的数值
机器数:计算机中用编码表达的数值,包括原码、反码、补码、移码等。
1》原码:保持原有的数值部分的形式不变,只将符号用二进制代码表示。0为正,1为负。
2》反码:原码数值部分各位取反,符号位:0为正,1为负。
3》补码:方法1:原码取反末尾加一,符号位:0为正,1为负。
方法2:从右到左遇见的第一个1的位置开始,第一个1位置右边所有的数值位全部取反,符号位:0为正,1为负
4》移码:补码的数值部分不变,符号取反,即得移码。反之亦然。
例如:已知x=-1100101 ,求[x]补和[x]移。
x=-1100101 ——》 [x]补=10011011 ——–只将符号位取反—》[x]移=00011011
同理,已知移码求原码的话 ,一步一步倒着推:先由移码 —》得补码—-》再得原码
其实很简单,先说结论吧,先把调整至D调,然后把所有弦的音升高半个音就行了,从低音到高音的唱名为12356,音名为bE,F,G,bB,C。
D调的21弦到17弦的定弦是(括号内是唱名)D(1)E(2)#F(3)A(5)B(6)
bE调的21弦到17弦的定弦则是(括号内是唱名)bE(1)F(2)G(3)bB(5)C(6)
===我是分割线====
古筝任何调每根弦的音名都是能用十二平均律算出来,这个不多说了。
我再来说说确定唱名:
古筝的转调方法是这样的:
#F <— B <— E <— A <— D —> G —> C —> F —> bB —> bE
这个链子(其实就是万恶的五度圈)是这样起作用的,向右转调就把本调的3升高半个音,然后把这个音看成1。
比如D调转G调,就是把所有D调的3(绿弦向上的第一根弦,向下的第四根弦,即第四、九、十四、十九弦)升高半个音,作为G调的1。
这样的话我们可以推出,要是向左走就要把所有的1调成7,在看成3就行了。
用这样的方式我们就可以推导出所有的唱名和音名。
然后这个五度圈的转调,要出现降记号是必须要越过bB的,所以按照上面的方法这个过程就是:
1,列出D调的唱名:
2,把所有的3写成1,然后按照1的位置写出其他的音
3,就按照这个方法可以随便写了,我就写到bE吧
红色的是有颜色的弦,
下面我们来看看这个过程中升了半个音的弦(3变成4看成1这个过程),我用黄色框在一个八度内表示:
可以看出,从D到bE,其实就是把一个八度内所有弦都调高了半个音。
二,推广
同样,我们可以很简单的知道一个结论,无论是从D到#D,还是A到#A,他们的调音方法都是直接从没有升号的调把所有弦升高半个音。比如你要调bG调,其实就是把G调全部调高半个音。
当然。这又给我们带来一个问题,就是:你说的都是升高音,可不可以不按照五度圈直接降低呢?
比如如果需要bD调,我们就需要 D —> G —> C —> F —> bB —> bE —> bA —> bD
按照上面的方法就是先调C调再全部升高,好麻烦,可不可以直接从D开始,全部降低半个音不就是bD了吗?
答案是可以,而且应该就这么做,原因是古筝调音是有局限的,一根弦调高一个全音其实很容易把弦崩断(调过《西域随想》的小盆友应该有体会)
而且上面的调音方法是有局限的,那就是正着调反着调出来的音唱名不一样:
如上面的图,其实两个bE的唱名都不一样一个是12356,另一个是61235,因为一个是升高弦的音高一个是降低弦的音高的原因,这就是为什么 @陈川 给的定弦是61235的原因,但是这个定弦对应的音名应该是6(C),1(bE),2(F),3(G),5(bB)才对。所以D到bD是完全可以降低的,而且比升高的方法要更好,因为隔得更加近。具体到调音来看,采取哪种方法还是要根据音乐作品的规定来调整,如果没规定,当然哪个方便调哪个啦。同时利用升高降低的方法,无论哪个调都可以最多让每根弦升高或者降低每半音便可以到达。下面附上我自己打的参考转调表:其实上面的文字里有一个错误我希望大家能认真看特地没改,然而一年过去了,仍然没人发现不开心~~o(>_<)o ~~