admin 管理员组

文章数量: 1184232


2024年3月19日发(作者:kvm switch切换器)

C语言中的左移和右移运算

C语言中的左移和右移运算(>>和<<)

---------------------------------------------------------

1、各种数据格式(整型int,字符型char等)占有几个存储单元(不同的编译器有所

不同)

在TC2.0和keil中:(也是ANSI的标准)

char占有1个字节(即8位二进制数)。unsigned char类型的变量,最大值为0xff

(十六进制),255(十进制)

int占有2个字节(即16位二进制数)。unsigned int类型的变量,最大值为0xffff

(十六进制),65535(十进制)

long int占有4个字节

folat占有4个字节,long float 和double都占有8个字节,long double 占16个

字节

在VC++中:

char占有1个字节,int和float占有4个字节,double占有8个字节

-------------------------------------------------------------------

2、逻辑左移/右移和算术左移/右移的区别(这两种位运算,仅适用于整型和字符型。

对实数型格式的数据不适用)

逻辑左移:丢弃最低位,0补最高位。(假设仅左移1位)二进制数:1111 1111逻辑

左移1位,得:0111 1111

逻辑右移:丢弃最高位,0补最低位。(假设仅右移1位)二进制数:1111 1111逻辑

左移1位,得:1111 1110

算术左移:以保持符号位不变为基础,进行逻辑左移。(假设仅左移1位)二进制数:

1000 1111得:1100 0111

算术右移:以保持符号位不变为基础,进行逻辑右移。(假设仅右移1位)二进制数:

1000 1111得:1001 1110

------------------------------------------------------------------

好了,进入正题:(分无符型和有符型进行讨论)

以下结果,是通过VC++6.0调试的(char占1字节,int占4字节)


本文标签: 右移 逻辑 占有 进行 符型