c语言中-1怎么表示,C语言中位操作符(1)-计算机中的整数表示方法

写在前面

长久以来,位操作符一直困扰着我,为什么呢?因为其虽易用,但是我自己却理解不透彻,用着总觉得有隐患?那么今天就来详细地理一下计算机中的位操作符与整数在计算机中的存储。

本文是作为一个非科班出身程序员的自我学习记录之作,如果能够在自我提高的同时也能帮助读友提高,我自是高兴;如有任何疑问或者不妥之处,敬请评论指正。

写着写着有些太多,故而分两次写完吧,本次只讨论计算机中整数的表示方法。

计算机中数字的表示方法

我们都知道在计算机中,数是以补码表示的,这样表示定义是什么呢,而好处又是什么?

先看定义:

正数的原码、反码、补码是其本身;

负数的原码是其本身,反码是除了符号位以外按位取反,补码则是反码加1;

举例说明:

例1

//uint8_t即是无符号8位数,也就是跟char相同的定义

/*0000 1000,这是其原码反码和补码,也就是其在计算机中是这么存储的,也就是说计算机中某个位置一定有0000 1000这一段二进制码*/

uint8_t x = 0x08;

uint8_t y = x >> 1;//x = 0000 1000 -> y = 0000 0100 = 4;

这里x的二进制表示为0000 1000,最高符号位为0,表示是正数。8位无符号数8的原反补码如下:

原码:0000 1000

反码:0000 1000

你可能感兴趣的:(c语言中-1怎么表示)