队列的实现方式

时间:2024-11-01 14:07:07
二进制原码 反码 补码以及二进制位运算和移位运算

做而论道_CS: 计算机只用补码,原码反码都是不用的。 补码,也没那么复杂。 从符号位原码反码入手,就是走入歧途了。 补码,仅仅是来自于【舍弃进位】。 补码,与原码反码,并无半点关系。 补码,也并非二进制才有。 任何进制,都有补码的存在。 你看十进制吧,两位,就是:0~99。 你可以这么算:27 + 99 = (一百) 26 这么算也可以:27-1 = 26 你如果忽略进位,仍旧保持两位数,  这两种算法的功能,就是完全相同的。 就是说,舍弃了进位:  正数,就能当负数使用。  加法,也就能完成减法运算。 在计算机中舍弃进位:  负数和减法,就都没有了。  减法器,当然就没有用了。 计算机有一个加法器,便可横行天下! 舍弃进位,才是补码的来源和存在意义。 两位十进制时,舍弃进位,就是减去一百。 那么,加 99,再减 100,当然就是 “-1”。 八位二进制,是:0000 0000~1111 1111。 也就是十进制的:0 ~ 255。 出现进位,就是:2^8 = 256。 那么,加上 255 (1111 1111)再舍弃进位,也就是-1 了。 同理,+254 (1111 1110),就是-2 了。  +253 (1111 1101),即-3。 。。。 以上这些正数,就是【代替负数的补码】。 而正数,本来就是正数,不需要由谁来代替。 所以,零和正数,其本身就是补码了。 例:求-31 的八位补码是多少? 解:2^8-31 = 256-31 = 225 = 1110 0001 (二进制)。 完事! 什么符号位原码反码 ...,一概无用! 计算机专家发明这些 “补码”,其理论基础,  只不过是小学学过的【进位】而已。 但是,计算机专家并没有弄明白【舍弃进位】的意义。 所以,就编造了一大滩垃圾知识:  机器数真值符号位原码反码补码正数三码相同负数取反加一符号位也参加运算 ... 这些,一概都是无用的。 谁要是跟老外学算术,  立刻,马上,直接,就掉沟里去了!