单片机中,c语言有符号变量 移位是时符号位会移位吗?
答案:4 悬赏:30 手机版
解决时间 2021-02-18 00:07
- 提问者网友:原来太熟悉了会陌生
- 2021-02-17 14:55
单片机中,c语言有符号变量 移位是时符号位会移位吗?
最佳答案
- 五星知识达人网友:爱难随人意
- 2021-02-17 16:18
首先,要搞懂,计算机中的所有数据都是以补码的形式进行存储的,对于正数而言,它的原码、反码和补码均相同,没什么好研究的。
而对于负数则有所不同,负数的反码是它的原码除符号位不变外,其余位按位取反,它的补码则是在反码的基础上加1。
对于以下操作,均是在以补码的形式进行存储时的操作
<< 表示左移位,例如 int i=5;i<<2;表示对于变量i左移2位。无论是正数还是负数,左移操作均是高位舍弃,低位补0
>> 表示右移位,例如 int i=5; i>>2;表示对于变量i右移2位。正数右移操作是低位舍弃,高位补0,负数右移操作是低位舍弃,高位补1
>>> 表示无符号右移位,不管是正数还是负数,进行无符号右移操作均是低位舍弃,高位补0
而对于负数则有所不同,负数的反码是它的原码除符号位不变外,其余位按位取反,它的补码则是在反码的基础上加1。
对于以下操作,均是在以补码的形式进行存储时的操作
<< 表示左移位,例如 int i=5;i<<2;表示对于变量i左移2位。无论是正数还是负数,左移操作均是高位舍弃,低位补0
>> 表示右移位,例如 int i=5; i>>2;表示对于变量i右移2位。正数右移操作是低位舍弃,高位补0,负数右移操作是低位舍弃,高位补1
>>> 表示无符号右移位,不管是正数还是负数,进行无符号右移操作均是低位舍弃,高位补0
全部回答
- 1楼网友:旧脸谱
- 2021-02-17 18:26
移位时,只是变量移位,符号不管。。
- 2楼网友:污到你湿
- 2021-02-17 18:19
不会吧,那就要看你怎么定位变量。
- 3楼网友:神的生死簿
- 2021-02-17 17:50
你好!
直接做程序试试不是最好的么,单步跟踪调试看运行结果
>> << >>> <<<
char
unsigned char
0xff 0x0f 每种都试试
下班了,以后有空了我也试试
仅代表个人观点,不喜勿喷,谢谢。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯