原码 反码 补码
概述:
数值的表示方法——原码、反码和补码
原码:最高位为符号位,其余各位为数值本身的绝对值
反码
正数:反码与原码相同
负数:符号位为 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是根据给出的%..是多少打印对应的值