一道题回顾计算机数值存储方式-原码,反码,补码

突然想到了计算机的补码,现在利用这个题目回顾一下相关知识点

unsigned char ch = -1;

int val = ch;

val的最终值是255;

换算成二进制一下,-1的源码:1000 0001,反码:1111 1110 ,负数在计算机中是以补码形式存储的,-1的补码:1111 1111 

ch 变量是 无符号的,也就是整个补码的二进制位都是数值位,1111 1111 二进制位换算成十进制就是255,最终赋值给整数结果自然也是255

这道题目考察的就是计算机数值的存储方式,对于正数,反码和补码一样都是其本身,对于负数而言,有点区别

负数的反码:原码的基础上,符号位不变,数值为取反

负数的补码:反码的基础上+1

原文地址:https://www.cnblogs.com/knight-monkey/p/knight_201608031122.html