原码、反码、补码分析

来源:互联网 发布:戏子家事天下知 出处 编辑:程序博客网 时间:2024/05/21 08:04

数值的表示方法——原码、反码、补码


      原码:最高位为符号位,其余位为数值本身的绝对值

      反码:

正数:反码和原码相同

负数:最高位为符号位为1,其余位原码取反

     补码:

正数:原码、反码和补码相同

负数:最高位符号位为1,其余位为原码取反,在对整个书加1



计算机中原码用于表示有符号的正数和无符号整数

 ex:     int x=1; //在内存中十六进制的表示方式为 //0000 00001 //0000 0000 0000 0000 0000 0000 0000 0001   //0表示正数,1代表负数  (二进制)

计算机的负数用补码来表示

ex:    int x=-1;//在内存中十六进制的表示方式为//FFFF FFFF//1111 1111 1111 1111 1111 1111 1111 1111  (二进制)  最高位1 表示符号位分析:x=-1//int 4字节32位//1000 0000 0000 0000 0000 0000 0000 0001   //-1的原码//1111 1111 1111 1111 1111 1111 1111 1110   //-1的反码//1111 1111 1111 1111 1111 1111 1111 1111  //-1的补码



从这里我们可以看出,计算机内存中是一哦那个补码来表示负数的


例题分析:

void main(){int x=-1;printf("%d,%u",)//这里输出结果为 -1,4294967295//%d 是按照有符号十进制打印,%u是按照无符号十进制打印//printf 是通过读取二进制数据,按照%d%u来解析//-1 在内存中的十六进制表示FFFF FFFF//十六进制FFFF FFFF 按照%u 来解析就是上面的4294967295 }




0 0
原创粉丝点击