C语言:计算机中的原码、反码、补码
进制转化
计算机底层存储具体数字时使用的是二进制形式,但是计算机在存储一个数字时并不是直接存储该数字对应的二进制数字,而是存储该数字对应二进制数字的补码。
10进制转2进制:不断除2得余数,直到商为0,然后将每步得到的余数倒写。
//例子:34转化为2进制过程:
//34/2 = 17 + 0;17/2 = 8 + 1;8 /2 = 4 + 0;4/2 = 2 + 0;2/2 = 1 + 0;1/2 = 0 + 1
//2进制:0b0010 0010
同理,10进制转8进制、10进制转16进制的步骤与转2进制步骤相似,只需将除数从2变为8,16既可。
原码、反码、补码是计算机存储具体数据(整形类型,如有无unsigned修饰的char,int,short,long)的编码方式。
原码
计算机在存储真值时,第一位为符号位,0表示该数为正数,1表示负数,其余位表示值的大小。
以char i = 10为例,2进制原码表示为0b0000 1010; i &