看来,你对自己的问题并不是很清楚!给你介绍一点:
1.所谓的位是指二进制位,一个整数在计算机中是用二进制表示的(最高位表示符号,0为正整数,1为负整数)
如65,用8位二进制表示就是
01000001,那么高4位便是
0100(即10进制的4),而低4位就是
0001(即10进制的1)
整数在计算中表示的时候,正数用原码,负数用补码表示.(这些东西就要看书学习了)
2.在C语言中一个int变量可以用sinzeof(int)计算其占用的字节数(一般可能是2,在不同情况下可能是不同的),将其乘以8就是其二进制数占用的位数.
3.C中的移位运算就是将二制位向左或向右移动,移位时超出位数的部分,将丢掉,而不足的部分将补0
如上面的65,其二进制左移4位便是00010000(如果再对它右移4位就变成了0000
0001),而右移4位便是0000
0100,现在你看这两个数如果去掉左边4个0(对于一个整数来说,左边的0不会影响它的大小),不就分别是低4位和高4位的值了.
上面程序中
">>(右移)"和
"<<(左移)"就是移位操作符.
y<<=sizeof(int)*8-4; //就是将y的值左移(其所占用二进制位数-4)位,结果还存于y中,余类推
不知你能否理解?
你好好看书吧,祝学习愉快!
[
本帖最后由 cnfarer 于 2010-1-26 14:53 编辑 ]