说明5种移位操作的名称及其的特点_移位器是什么东西

说明5种移位操作的名称及其的特点_移位器是什么东西移位操作及其在数据类型转换中的作用一.对移位操作的基本概述:1、什么样的数据类型能够直接移位char、short、int、long、unsigned char、unsigned short、unsigned int、unsigne

移位操作及其在数据类型转换中的作用   一.对移位操作的基本概述:   1、什么样的数据类型能够直接移位   char、short、int、long、unsigned char、unsigned short、unsigned int、unsigned long都能够进行移位操作。而double、float、bool、long double则不能够进行移位操作。       2、有符号数据类型的移位操作   对于char、short、int、long这些有符号的数据类型:   对负数进行左移:符号位始终为1。其它位左移   对正数进行左移:全部位左移。即 <<,可能会变成负数   对负数进行右移:取绝对值,然后右移,再取相反数   对正数进行右移:全部位右移。即 >>       3、无符号数据类型的移位操作   对于unsigned char、unsigned short、unsigned int、unsigned long这些无符号数据类型:   没有特殊要说明的。使用<< 和 >> 操作符就OK了   结束语   8086 中存在逻辑移位、算术移位,而CC++中的移位似乎既不是逻辑移位,也不是算术移位。   比方-1,我们若对它右移1位,C的结果仍旧是-1,其实不管右移多少位始终是-1,逻辑移位得到的结果(8位表示)应该是-128。所以这点要注意。   二.利用移位操作实现不同数据类型的转换:   注:左移一位相当于*2。右移一位相当于除以2;   以下是实现long int 到unsigned char,及unsigned char 到short int转换的实例,在dev C++以下,已执行通过,请參考:   #include <stdio.h>   #include <malloc.h>   /*   NAME      uint32Touint8   DESCRIPTION       Unpack auint32 into an array of 4 uint8s   */   void uint32Touint8(unsigned char *dest, unsigned longint src)   {       *dest++ =src >> 24;       *dest++ =(src >> 16) & 0xFF;       *dest++ =(src >> 8) & 0xFF;       *dest = src& 0xFF;   }       /*   NAME      uint8Touint16   DESCRIPTION       Pack anarray of 2n uint8s into an array of n uint16s   /   void uint8Touint16(unsigned short int *dest, unsignedchar *src, unsigned short int n)   {       while (n–)       {           *dest =*src++ << 8;           *dest++|= *src++;       }   }   int main()   {       unsignedchar *dest1 = (unsigned char*)malloc(1);       unsignedlong int src1 = 0x;       unsignedchar *src2 = (unsigned char*)malloc(2);       unsignedshort int *dest2 = (unsigned short int *)malloc(1) ;       *src2 =0x12;       *(src2+1) =0x34;      uint32Touint8(dest1,src1);      uint8Touint16(dest2,src2,1);       if(dest1 !=NULL)       {       for(int i=0;i<4; i++)      printf(“dest[%x] = 0x%x   ”,i,dest1[i]);      }/*dest[0]=0x12,dest[1]=0x34,dest[2]=0x56,dest[3]=0x78*/       if(dest2 !=NULL)       {      printf(“dest2 = 0x%x   ”,*dest2++);      }/*dest2=0x1234*/       getchar();       return 0;       }

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/54305.html

(0)
上一篇 2024年 9月 1日 下午6:23
下一篇 2024年 9月 1日 下午6:26

相关推荐

关注微信