二进制数、位、字节
PS:位运算详见计算机科学导论
前言:
C语言中可以单独操控变量中的位,例如:通常向硬件设备发送一两个字节来操控这些设备,每个位(bit)都有特定的含义,另外,与文件相关的操作信息经常被存储,通过特定的位表明特定的项。许多的压缩和加密操作都是直接除理单独的位。
高级语言一般不会处理这些级别的细节,C在提供高级语言便利的同时,还能在为汇编语言所保留的级别上工作。
二进制整数
C语言用字节(byte)表示存储系统字符集所需要的大小,所以C字节看可能是8位,9位,16位或者其他值。不过藐视存储芯片和数据率中所用的字节指的是8位字节。
假设一个字节为8位,每一位的编号对应2的相应指数,该字节能表示的最大数字是吧每一个位都设置为1:11111111这个二进制数的值就是128 64 32 16 8 4 2 1 = 255
,二这个字节最小的二进制数是00000000,其值是0,因此1字节可以存储1~255范围内的数字,总共256个值。
或者不同的方式解释位组合,程序可以用1字节存储-128~ 128范围内的整数,总共还是256个值。
例如:
C
代码语言:javascript复制unsigned char//用一个字节表示的范围是0~255
signed char//用一个字节表示的范围是-128~ 128
有符号整数
如何表示有符号整数取决于硬件,而不是C语言。
表示方法:表示有符号数最简单的方法是用1位存储符号,用剩下的7位来表示数字本身,用这种符号量表示法,10000001表示-1,00000001表示1.因此,其表示范围是-127~ 127
缺点:这种方法表示会出现两个0: 0和-0,这很容易混淆,而且两个位来存储同一个值也很浪费。
解决方法:二进制补码(详见计算机科学导论P32)简单概述:以1字节为例,
PS:二进制反码