<2017年12月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

原码 反码 补码

概述:
数值的表示方法——原码、反码和补码
原码:最高位为符号位,其余各位为数值本身的绝对值

反码
正数:反码与原码相同
负数:符号位为 1,其余位对原码取反

补码
正数:原码、反码、补码相同
负数:最高位为 1,其余位为原码取反,再对整个数加 1
计算机原码用于表示有符号整数中的正数和无符号整数

================================================

计算机用【原码】存储(有符号正数)和(无符号整数)
计算机用【补码】存储(有符号负数),补码减1=反码,反码取反=原码

示列
int a = -1; 这里的-1用补码存储
print(%d,%u,a,a);
%d按打印=-1,为什么是-1(原码),因为这里打印的有符号十进制,如果这里是-100,%u打印,就会打印-00,
%u按补码打印=4294967295(补码)%u按照无符号十进制打印。

原码:1000 0000 0000 0000 0000 0000 0000 0001
反码:1111 1111 1111 1111 1111 1111 1111 1110
补码:1111 1111 1111 1111 1111 1111 1111 1111 补码要从反码哪里加1

 

%d按照有符号十进制打印,%u按照无符号十进制打印。

pritf是直接抓取二进制数,无论这个数据以前是什么类型,按照%d,%u,%....来解析

printf是根据给出的%..是多少打印对应的值

posted @ 2017-12-28 14:19  史D芬周  阅读(251)  评论(0编辑  收藏  举报