当前位置: 首页 > news >正文

公司网站设计图计算机网页设计是属于哪一个专业

公司网站设计图,计算机网页设计是属于哪一个专业,wordpress头像 换多说,怎么入侵wordpress1、双目运算符 位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。 位移位运算符分为左移和右移两种,均为双目运算符。 例如: 8 >> 3 (意思是8向右移动3位)第一运算对象是移位对象&…

1、双目运算符

位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。

位移位运算符分为左移和右移两种,均为双目运算符。

例如: 8  >>  3   (意思是8向右移动3位)第一运算对象是移位对象,第二个运算对象是所移的二进制位数。

2、逻辑移位与算术移位

在嵌入式开发中,移位操作是常用的一种运算。但是在进行移位运算的时候,如果没有考虑到有符号和无符号的移位区别,就很容易掉进陷阱,得不到我们想要的结果。

我们可以看下面例子,你们猜出结果么?

signedchar i = -125;

    i= i >> 2;

    cout<< (int)i;

return 0;

编译结果为:-32

为什么有这样的结果?首先介绍两个概念:逻辑移位和算数移位。

逻辑移位,简单理解就是物理上按位进行的左右移动,两头用0进行补充,不关心数值的符号问题。

算术移位,同样也是物理上按位进行的左右移动,两头用0进行补充,但必须确保符号位不改变。

算术移位指令

算术移位指令有:算术左移SAL(ShiftAlgebraic Left)和算术右移SAR(ShiftAlgebraic Right)。算术移位指令的功能描述如下:

(1)算术左移SAL把目的操作数的低位向高位移,空出的低位补0;

      

(2)算术右移SAR把目的操作数的高位向低位移,空出的高位用最高位(符号位)填补。

      

逻辑移位指令

此组指令有:逻辑左移SHL(ShiftLogical Left)和逻辑右移SHR(ShiftLogical Right)。逻辑左移/右移指令只有它们的移位方向不同,移位后空出的位都补0。

(1)    逻辑左移SHL 

(2)    逻辑右移SHR 

但我们好奇的是“i<<3”和“i>>3”到底采用的是算术还是逻辑移位呢?

 

首先了解一下《计算机原理及基础 —— 有符号类型和无符号类型》

通过sizeof查看在计算机中用几字节存储的,即8在计算机内是以0000 1000 形式还是以  0000 0000 0000 1000形式!

其次了解一下 《原码、反码、补码之间的快速转换和简单运算》

查看有符号、无符号类型左移或者右移后的数值是多少!

 

左移

1、当向左边移动3位,采用的什么方式的移动???

#include <stdio.h>
int main()
{unsigned int ui = 8;ui = ui << 3;printf("ui = %d 无符号类型左移(正数)\n", ui);printf("sizeof(unsigned int ) = %d\n", sizeof(unsigned int));int i = 8;i = i << 3;printf("i = %d  有符号类型左移(正数)\n", i);printf("sizeof(int ) = %d\n", sizeof(int));int fi = -8;fi = fi << 3;printf("fi = %d  有符号类型左移(负数)\n", fi);return 0;
}

 结果显示:
ui = 64 无符号类型左移(正数)
sizeof(unsigned int ) = 4
i = 64  有符号类型左移(正数)
sizeof(int ) = 4
fi = -64  有符号类型左移(负数)

分析:

移位对象 移位对象的二进制表示 (4字节 32位)所移的二进制位数移位后的二进制  移位后的10进制移位对象类型移动方向移位方式
80…0 0000 100030…0 0010 000064unsigned int左移逻辑左移
80…0 0000 100030…0 0010 000064int左移逻辑左移
-81…1 1111 100031…1 1100 0000-64int左移

逻辑左移

 

 

 

 

 

结论:不管是否有无符号类型,也不管值的正负,均采用的是逻辑左移。

右移

1、当向右边移动3位,采用的什么方式的移动???

#include <stdio.h>
int main()
{unsigned int ui = 8;ui = ui >> 3;printf("ui = %d 无符号类型右移(正数)\n", ui);printf("sizeof(unsigned int ) = %d\n", sizeof(unsigned int));int i = 8;i = i >> 3;printf("i = %d  有符号类型右移(正数)\n", i);printf("sizeof(int ) = %d\n", sizeof(int));int fi = -8;fi = fi >> 3;printf("fi = %d  有符号类型右移(负数)\n", fi);return 0;
}

 结果显示:
ui = 1 无符号类型右移(正数)
sizeof(unsigned int ) = 4
i = 1  有符号类型右移(正数)
sizeof(int ) = 4
fi = -1  有符号类型右移(负数)

分析:

移位对象 移位对象的二进制表示 (4字节 32位)所移的二进制位数移位后的二进制  移位后的10进制移位对象类型移动方向移位方式
80…0 0000 100030…0 0000 00011unsigned int右移逻辑右移
80…0 0000 100030…0 0000 00011int右移算术右移
-81…1 1111 100031…1 1111 1111-1int右移

算术右移

 

 

 

 

 

结论:说明只要是有符号数,不管值是正还是负,右移时采用的都是算术右移。 



再加一个实例:

(1)unsigned char x=3; 
x<<1是多少?x>>1是多少?   
(2)char x=3; 
x<<1是多少?x>>1是多少? 
(3)char x=-3; 
x<<1是多少?x>>1是多少? 
  3写成二进制数是00000011;-3写成二进制数是(补码)11111101。 
  程序执行的时候,操作的是数值的编码表示,也就是数值在内存中的二进制表示。比如说,程序取-3的时候,就去取11111101。 
  (1)对无符号数3来说,x<<1往左移一位,最左边的位移掉了,最右边的移进来的位补零。变成00000110,所以结果是6;x>>1往右边移一位,由于是无符号数,所以逻辑右移,最右边一位移掉,最左边移进来的位补零,变成00000001,所以结果是1。 
  (2)对于有符号数3来说,x<<1往左移一位,最左边的位移掉了,最右边的移进来的位补零。变成00000110,所以结果是6;x>>1往右边移一位,由于是有符号数,可能发生逻辑右移,也可能发生算术右移,这一点,C标准并没有明确地指定是使用逻辑右移还是算术右移。但大多数的机器都使用算术右移,变成00000001,所以结果还是1。但是请注意,这只是说大多数的机器是这样的,你敢保证自己不会碰到特殊情况吗? 
  (3)对于有符号数-3来说,x<<1往左移一位,最左边的位移掉了,最右边的移进来的位补零。变成11111010,结果是-6。往右移一位,由于是有符号数,可能发生逻辑右移,也可能发生算术右移。大多数机器使用算术右移,变成11111110,结果是-2。 
  总结:左移时总是移位和补零。右移时无符号数是移位和补零,此时称为逻辑右移;而有符号数大多数情况下是移位和补最左边的位(也就是补最高有效位),移几位就补几位,此时称为算术右移。
 

 综上所述:

 左移时总是移位和补零,无论是有符号类型数据还是无符号类型数据都统称为逻辑左移
 右移时无符号数是移位和补零,此时称为逻辑右移;
 右移时有符号数大多数情况下是移位和补最左边的位(也就是补最高有效位),移几位就补几位,此时称为算术右移

参考连接: 
1、https://blog.csdn.net/jiangjieqazwsx/article/details/79942154
2、https://blog.csdn.net/u013162035/article/details/78620803
3、https://blog.csdn.net/u012745229/article/details/51405332
4、https://www.baidu.com/link?url=gJVDtsgyNg83SN6nnAm5IAYLo-l9zh7T8UpVtVsngbRbqJw2GD3hYrv6OwES54FEZCDnlOhTP4z0Z6HmoOzSjX2fz8hxf9D5qYuFWibM_r_V3k39HksK5mpnFWHvosSt8EvtW9Gui5AEz-m0as7fFK&wd=&eqid=fa49686500000f6f000000025c2c6923

 

http://www.yayakq.cn/news/962052/

相关文章:

  • 湖北企业网站建设可做免费推广产品的网站有哪些
  • 四川建设厅网站招聘湖南平台网站建设设计
  • 有什么好用的模拟建站软件重庆公共资源交易中心官网
  • 定制摄影app和摄影网站的区别如何在linux服务器上架设网站
  • 工体网站建设公司佛山行业网站设计
  • 找代做海报的网站网站建设项目验收单
  • 网站建设官方网站网站建设+开源
  • 怎么做公司内网网站企业咨询管理公司起名
  • 成品电影网站建设html5模板开发wordpress主题
  • 优化网站怎么做万全网站建设
  • 教育类网站如何做免费网页设计教程视频教程
  • 湖州集团网站建设网页设计师培训多少钱
  • 手机付费咨询网站建设专门做护肤品网站
  • 北京网站排名优化用vue做网站一般用什么组件库
  • 淘宝数据网站开发企业网站的制作公司
  • 网站推广排名教程学校网站的英文
  • 直播间挂人气自助网站公司网站建设和百度推广流程图
  • 亚马逊网站风格企业注册号
  • 上行30m可以做网站吗个体工商户网站备案
  • 大庆建设局网站迁址wordpress 响应分页
  • 哪个网站买域名便宜推广你公司网站
  • 商务网站创建方案潍坊品牌设计公司
  • 想做个电影网站该怎么做厦门做网站需要多少钱
  • 唯品会网站建设特色定制app开发需求
  • 网站地图什么格式网络营销平台有哪些?
  • 网站 手机版网站开发合同网店托管网
  • 专业服务网站建设网站建设价格差异多少
  • 为古汉字老人做网站云服务器gpu租用
  • o2o商城网站建设方案南漳县建设局网站
  • 江阴房产网510房产网网站推广优化c重庆