请问C语言高手些 把11000000分别右移(0~7位)之后分别各是多少(二进制数形式)? 再把每一次移位之后的 c语言编写 八位二进制数,最后两位相与,高七位向右移一位,把...

\u5728C\u8bed\u8a00\u4e2d\uff0c\u600e\u6837\u5c06\u4e00\u4e2a\u56db\u5341\u4f4d\u7684\u4e8c\u8fdb\u5236\u6570\u5206\u79bb\u6210\u4e94\u4e2a\u516b\u4f4d\u4e8c\u8fdb\u5236\u6570\uff1f\u662f\u600e\u6837\u79fb\u4f4d?

\u5047\u5982a\u662f\u90a3\u4e2a40\u4f4d\u7684\u6570\uff0cx\uff0cy\uff0cz\uff0cw\uff0cr\u4e3a\u90a3\u4e94\u4e2a8\u4f4d\u6570\uff0c
x=a&0xff;
a>>=8;
y=a&0xff;
a>>=8;
\u2026\u2026
\u63a5\u4e0b\u6765\u7684\u81ea\u5df1\u5f04\u4e86\uff0c\u6211\u5c31\u8bf4\u5230\u8fd9\uff0c\u5f53\u7136\u7ed3\u679c\u662f16\u8fdb\u5236\u7684\uff0c\u8fd9\u5c31\u662f\u53e6\u5916\u4e00\u4e2a\u95ee\u9898\u4e86\uff0c\u81ea\u5df1\u60f3\u5427

# include

void main(void)
{
unsigned char a = 9;
unsigned char temp;
int i = 20;//\u6267\u884c\u6b21\u6570

while (i--)
{
printf("0x%x\n", a);
temp = (a&0x2) & (a&0x1);
a = (a>>1) | (temp<<7);
}
}

每次右移都是高位补0,最低位丢弃,比如右移1位,最低位的0丢弃,最高补0,变为01100000.
右移0位11000000
右移1位01100000
右移2位00110000
右移3位00011000
右移4位00001100
右移5位00000110
右移6位00000011
右移7位00000001
其实右移一次也相当于除以2,

右移1位11000000 ---》1100000
右移2位11000000 ---》110000
右移3位11000000 ---》11000
右移4位11000000 ---》1100
右移5位11000000 ---》110
右移6位11000000 ---》11
右移一位11000000 ---》1
相当于除2

右移0位11000000
右移1位01100000
右移2位00110000
右移3位00011000
右移4位00001100
右移5位00000110
右移6位00000011
右移7位00000001
这个也太简单了吧?

qwefdewf

扩展阅读:c语言1- 0 ... c#语言学习 ... c#语言翻译器 ... 各国语言翻译器 ... c语言基础知识入门 ... 编程实现1+2+3+ 100 ... c语言引导符大全 ... 简单计算器c语言 ... c语言1 1 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网