当前位置:主页 > c/c++教程 > C语言原码、反码、补码和移码

C语言原码、反码、补码和移码知识点总结

发布:2021-06-02 08:38:24 59


本站精选了一篇C语言相关的编程文章,网友卓梦露根据主题投稿了本篇教程内容,涉及到原码、、反码、、补码、、移码详解、原码、反码、补码和移码介绍、C语言原码、反码、补码和移码相关内容,已被187网友关注,内容中涉及的知识点可以在下方直接下载获取。

C语言原码、反码、补码和移码

 原码、反码、补码、移码的作用?

在计算机内,机器数有无符号和带符号数之分。无符号数表示正数,在机器数中没有符号位。位于无符号数,若约定小数点的位置在机器数的最低位之后,则是纯整数;若约定小数点的位置在机器数的最高位之前,则是纯小数。对于带符号数,机器数的最高位是表示正、负的符号位,其余位则表示数值。若约定小数点的位置在机器数的最低数值位之后,则是纯整数;若约定小数点的位置在机器数的最高数值位之前(符号位之后),则是纯小数。

为了便于运算,带符号位的机器数可采用原码、反码和补码等不同的编码方法,机器数的这些编码方法称为码制。

原码、反码、补码、移码如何表示?

 举例:[+45]原=00101101       -45=10101101 (以下所有例子都为这两个数的变换)

原码:

原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。

举例:[+45]原=00101101       [-45]原=10101101

反码: 反码是数值存储的一种,但是由于补码更能有效表现数字在计算机中的形式,所以多数计算机一般都不采用反码表示数。

反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

举例:[+45]反=00101101       [-45]反=11010010

补码:在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

反码表示法规定:正数的补码与其原码相同;一种简单的方式,符号位保持1不变,数值位从右边数第一个1及其右边的0保持不变,左边按位取反。也可以从反码推补码,就是在反码的基础上加1。

举例:[+45]补=00101101       [-45]补=11010011

移码:

移码(又叫增码)是符号位取反的补码,一般用做浮点数的阶码,引入的目的是为了保证浮点数的机器零为全0。这个不分正负。

举例:[+45]移=10101101       [-45]移=01010011

以上就是机器码的原码、反码、补码和移码的表示方法,其实这些表示方法都是为了让计算机的运算更加方便。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


参考资料

相关文章

网友讨论