在C语言中,可以单独操控变量的位(bit),一般高级语言不会处理这级别的细节,C在提供高级语言便利的同时,还能为汇编语言所保留的级别上工作,这使其成为编写设备驱动程序和嵌入式代码的首选语言。
二进制整数(binary)
通常,1字节包含8位,C语言用字节(byte)表示储存系统字符集所需的大小,从左往右,分别给这8位分别编号7~0,在一字节中,编号是7的位被称为高阶位,编号为0的位被称为低阶位。
该字节能表达的最大数字:1111 1111,为255,最小值为:0000 0000,为0,所以一字节可存储0~255范围内的数字,总共256个值。或者通过不同的方式解释位组合,程序可以用1字节储存 -128 ~ +127范围内的整数,总共还是256个值。
通常,unsigned char 用一字节标识的范围是0~255,而signed char 表示的范围是 -128 ~ +127.
有符号整数
如何表示有符号整数取决于硬件本身,而不是C语言。一般有三种方式:
- 符号量表示法:用一位存储符号,剩下的7位表示数字本身。如1000 0001表示-1,0000 0001表示+1。其表示范围是-127 ~ +127,但是有两个0:-0和+0,容易混淆。
- 二进制补码:最常用,高阶位为0则是正,为1则为负。正数的表示和符号量表示法一样,负数则是正数的反码+1.如+127为0111 1111,则负数的二进制补码为:1000 0001。负数128为1000 0000。正数为0000 0001,-1则表示为1111 1111.该方法可以表示-128至+127.
- 二进制反码: 通过反转位组合中的每一位形成一个负数。如0000 0001表示1,则1111 1110表示-1,只有一个-0:1111 1111.该方法能表示-127至+127 。
八进制(octal)
每一个八进制位对应3个二进制位。
如八进制 0377,二进制表示为000 011 111 111
八进制123,二进制表示为001 010 011。
十六进制(hex)
每个十六进制数用四个二位数表示。
如0xF3,二进制为1111 0011
0xB9,二进制为1011 1001 。