原码补码


计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,数码的第一位为符号位,用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。

作用:表示和存储数值

C语言编译系统分配给各种类型数据字节是不同的,如Turbo C 2.0为每一个整型数据分配2个字节(16个二进位),而Visual C++为每一个整型数据分配4个字节(32位)。

 

求给定数值的补码分以下两种情况:

正数
的补码是其二进制表示,与原码相同。
负数
求负整数的补码,先将此数的绝对值写成二进制形式除(即写出此数绝对值的原码),然后所有位取反(0变1,1变0 ),再加1

例:求-5的补码。

-5的绝对值5的原码为(00000101)→所有位取反(11111010)→加1(11111011),所以-5的补码是11111011.

例:求-4的补码。

-4绝对值为4,4写成二进制形式(原码)为0000 0100,然后所有位数取反1111 1011,再加1得到1111 1100.

补码求原码

已知一个数的补码,求原码的操作其实就是对该补码再求补码

⑴如果补码的符号位为“0”,表示是一个正数,其原码就是补码。

⑵如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。

例:已知一个补码为11111001,求其原码。

因为符号位为“1”,表示是一个负数。首先符号位不变,另外几位都取反后为0000110;再加1,所以是10000111(-7)。

附:如果给整型变量分配2个字节,则在存储单元中能存放的最大值为01111111 11111111,第1位为0代表正数,后面15位全为1,此数值是十进制2^15-1=32767。最小数是10000000 00000000,此数是-2^15,即-32768。因此一个整型变量的值范围是-32768~32767。超过此范围,就会出现数值的“溢出”,输出的结果就会乱或者不准确。如果给整型变量分配4个字节,其能容纳的数值范围为-2^31~2^31-1,即-2147483648到2147483647。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM