C语言程序设计(13)

164 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情
数的范围:

对于一个字节(8位),可以表达的是:00000000-11111111;

其中,00000000为0;11111111~ 10000000->-1~-128(将二进制数看作补码);

00000001~ 01111111->1~127

对于c来说:在计算机中是11111111最高位为1说明是一个负数,将被看作为补码为-1;

而对于i来说:在计算机中是00000000 00000000 00000000 11111111

整数范围:

char:1字节(8比特):-128~127

short:2字节:-32768~32767

int:取决于编译器(CPU),通常的意义是“一个字“(计算机字长):4字节下:

-2^(32-1)~2^(32-1)-1

long:取决于编译器(CPU),通常的意义是”一个字“

long long:8字节。

一般来说:-2^(n-1)~2^(n-1)-1

为了区别补码和正整数可以用:unsigned

如果一个字面常数想表达自己是unsigned,可以在后面加上u或U:255U;或者在定义变量时在前面加上unsigned,例:unsigned char c=255;那么输出后c值就会变为255。

用l或L表达long (long)

unsigned初衷并非扩展数能表达的范围,而是为了做纯二进制计算,主要是为了移位。

整数越界

image.png

例:对于char来说,-128-1=127、127+1=-128;对于unsigned char来说同理。

整数的输入输出

只有两种形式:int和long long,

%d:int、short、char;

%u:unsigned;

%ld:long、long long;

%lu:unsigned long long。

8进制和16进制:

一个以0开头的数字字面量就是八进制;

一个以0x开头的数字字面量就是十六进制。

如果想输出八进制和十六进制,八进制用%o,十六进制是%x,当十六进制数中出现字母,%x输出小写字母,%X输出大写字母。

八进制和十六进制只是如何把数字表达为字符串,与内部如何表达数字无关。

十六进制很适合表达二进制数据,因为4位二进制正好是一个十六进制位;

八进制的一位数字正好表达3位二进制,因为早期计算机的字长是12的倍数,而非8。