在C语言中,何为整型数的溢出?位操作符和移位操作符又是什么?
1个回答
展开全部
整型溢出:
在整型数计算时,结果无法继续正确存储在整型变量中,即运算结果超出了整型数值所能表示的范围。比如计算100的阶乘等。溢出后的表现就是计算结果与期望值不符。
位操作符,是C语言中的一组操作符,包括
按位与&,按位或|,按位取反~,按位异或^,
左移<<,右移>>,以及在这六个操作符上扩展出的赋值符号,包括&=,|=,~=,^=,<<=,>>=等。
其中:
1
&为按位与操作,a&b结果的每位上,只有当a,b对应位上均为1时,才为1,否则结果位上为0。
2
|为按位或操作,只有a,b对应位上均为0,结果对应位上才为0;否则结果的该位上值为1。
3
~取反,为单目操作,只有一个操作数,当操作数的某位上值为1时,结果值为0;否则结果值为1。
4
^异或操作,a,b对应位上相同时,结果位上值为0;否则值为1。
5
<<左移操作,a<<b的结果为,将a的各个位向左移动b位,左侧b位抛弃,右侧补b个0。
6
>>右移操作,a>>b的结果为,将a的各个位向右移动b位,右侧b位抛弃,左侧补b个0或1。当a为无符号数,或正数时,左侧补0;当a为有符号负数时,左侧补1。
在整型数计算时,结果无法继续正确存储在整型变量中,即运算结果超出了整型数值所能表示的范围。比如计算100的阶乘等。溢出后的表现就是计算结果与期望值不符。
位操作符,是C语言中的一组操作符,包括
按位与&,按位或|,按位取反~,按位异或^,
左移<<,右移>>,以及在这六个操作符上扩展出的赋值符号,包括&=,|=,~=,^=,<<=,>>=等。
其中:
1
&为按位与操作,a&b结果的每位上,只有当a,b对应位上均为1时,才为1,否则结果位上为0。
2
|为按位或操作,只有a,b对应位上均为0,结果对应位上才为0;否则结果的该位上值为1。
3
~取反,为单目操作,只有一个操作数,当操作数的某位上值为1时,结果值为0;否则结果值为1。
4
^异或操作,a,b对应位上相同时,结果位上值为0;否则值为1。
5
<<左移操作,a<<b的结果为,将a的各个位向左移动b位,左侧b位抛弃,右侧补b个0。
6
>>右移操作,a>>b的结果为,将a的各个位向右移动b位,右侧b位抛弃,左侧补b个0或1。当a为无符号数,或正数时,左侧补0;当a为有符号负数时,左侧补1。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询