【计算机系统】原、反、补、移码
做而论道_CS:
由补码换算到十进制数,也极其简单。
你只需记住:【补码首位的权,是负数】。
一般的八位二进制数,各个位的权是:
128、64、32、16、8、4、2、1;
如果是八位的补码,各个位的权则是:
-128、64、32、16、8、4、2、1。
例如,有一个补码:1110 0001,
它代表的十进制是:-128 + 64 + 32 + 1 = -31。
如果,另一个补码:0110 0001,
它代表的十进制是:0 + 64 + 32 + 1 = +97。
仅仅使用【进制转换】,不就完事了吗?
哪里还需要用 “原码 ... ” 这些垃圾!
----------------
正负数与其补码的互相转换,是十分简单的事。
根本就用不着:原码反码取反加一!
你要是跟着老外学算术,你直接就掉坑里了!
【计算机系统】原、反、补、移码
做而论道_CS:
码长八位时,各码的表示范围如下。
原码:-127 ~ +127;
反码:-127 ~ +127;
补码:-128 ~ +127。
-128 只有补码,没有原码和反码!
没有原码,拿什么取反?
没有反码,拿什么加一?
既然取反加一不可用,那么,
-128 的补码,又是怎么来的?
是特殊规定的吗?
其实,各个数的补码,都是算出来的。
取反加一,并非是补码的来源。
计算机的字长,是固定的。
八位机、16 位机,每次计算,就是 8 位、16 位数。
而且,计算机中,只有加法器,没有减法器。
想要做减法,就要用【加上补码】来实现。
那么,45-45 = 0,八位机将如下计算:
0010 1101 + xxxx xxxx = 0000 0000。
其中的:xxxx xxxx,就是【-45 的八位补码】。
这个补码,到底是什么?
你自己也能推导出来。
先移项:xxxx xxxx = 0000 0000-0010 1101,
可得出:xxxx xxxx = (借位 1) 1101 0011,
只取八位结果,即:1101 0011。
至此,就求出了 [-45]补 = 1101 0011。
求负数的补码,就是这么简单!
-----------------
实际上,任意负数(-X)的补码,都是:0 - X。
你用二进制简单算一下,立刻就能得到结果。
(-128 的 8 位补码,也就是这样求出来的。)
同理,任意正数(+X)的补码,也都是:0 + X。
0 + X,不就是 X 吗?
所以,零和正数的补码,就是 X 本身!
-----------------
在计算机中,只有加法器,只能使用补码。
各个数的补码,都是由人工算出,再存入计算机。
所以,计算机中,根本就没有原码和反码。
不存在的东西,为什么还要讲、还要学、还要考研?
其实,计算机专家和老师,就是指望这个混饭吃!
顺便,再抓几个不及格的,抖一下威风。
大家都知道,老外的算术能力太差,
算个简单的数,都恨不得掰出脚趾头。
所以,计算机专家就编造了一套谎言:
机器数真值符号位原码反码补码正数三码相同
负数取反加一符号位不变符号位也参加运算模同余 ...
写这些,明显就是【拿个鞋拔子当做玉如意】。
假货,不仅仅在古董行业才有啊!
【数据库】码,超码,候选码与主码,外码
KeissCake:
姓名和年龄两个都重复时怎么标识一个元组
|