c++中按位取反_取反和按位取反

c++中按位取反_取反和按位取反#include<stdio.h>#include<iostream>usingnamespacestd;voidmain(){//做这类题目抓住两点:第一、无论是以进制表示还是整数形式赋值给变量,都要根据变量相应//的数据类型,表示为…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

 

  1. #include <stdio.h>  
  2. #include <iostream>  
  3.   
  4. using namespace std;  
  5.   
  6. void main()  
  7. {  
  8.       
  9.     //做这类题目抓住两点:第一、无论是以进制表示还是整数形式赋值给变量,都要根据变量相应  
  10.     //的数据类型,表示为补码的形式存储进计算机内存中;第二、无论是在做数据类型强制转换(  
  11.     //内存存储形式没有改变,这一点可以通过查看Memory得到)还是做位运算的时候,实际上都是对  
  12.     //内存中存储的数进行的操作(也可以查看Memory得到),至于呈现的时候就是根据设定的数据类  
  13.     //型把内存中存储的二进制数字进行相应规则的呈现即可  
  14.   
  15.     //cout << sizeof(long long) << endl;  
  16.   
  17.     //注意,计算机存储的都是数的补码,无论是正数还是负数,另外要注意数据类型的长度  
  18.     short int a = 0x8000;//有符号数则表示-32768(计算机就存这个数,它是补码,要算实际代表的数要运算)  
  19.     short int b = 0x7000;//有符号数表示28672  
  20.     unsigned short int c = 0x8000;//无符号数则表示32768,是正数  
  21.   
  22.     short int d = c;  
  23.     unsigned short int e = a;  
  24.   
  25.     cout << a << endl;//应输出-32768,因为是有符号数  
  26.     cout << b << endl;//应输出28762,应为是正数  
  27.     cout << c << endl;//应输出32768,因为是无符号数  
  28.     cout << d << endl;//应输出-32768,因为强制转换成了有符号数  
  29.     cout << e << endl;//应输出32768,因为强制转换成了无符号数  
  30.     //感觉强制转换的时候在内存存储形式并没有任何改变,只是呈现的形式改变而已,按照需要的数据类型格式进行呈现  
  31.     //任何的位操作都是对内存中存储的数进行的操作。  
  32.   
  33.     short int pre = -3;                 //在内存中的表示为1111 1111 1111 1101是它的补码形式,即0xfffd  
  34.     unsigned short int trans = pre;     //0xfffd无符号数应表示的是65533,注意内存内形式不变  
  35.     short int m = ~pre;                 //直接操作的是内存中存储的形式,按位取反后是0000 0000 0000 0010,即0x0002  
  36.     unsigned short int n = ~pre;        //实际上之后的形式还是0x0002  
  37.   
  38.     cout << pre << endl;  
  39.     cout << trans << endl;  
  40.     cout << m << endl;  
  41.     cout << n << endl;  
  42.   
  43.     cout << “/*********************************************************************************/” << endl;  
  44.     unsigned char ch = ‘F’;  
  45.     //其实下面一行代码做了三步操作  
  46.     //第一、首先把ch按位取反,之后在内存中的形式变为1011 1001  
  47.     //第二、把内存中的这个值先进行扩位,扩充成short类型的,扩位的时候是看做有符号数进行的,  
  48.     //扩位之后为1111 1111 1011 1001,即:0xffb9  
  49.     //第三、把0xffb9按照无符号数规则进行呈现  
  50.     unsigned short int p = ~ch;  
  51.     unsigned short int q = (unsigned)~ch;  
  52.   
  53.     cout << ch << endl;  
  54.     cout << p << endl;  
  55.     cout << q << endl;  
  56.   
  57.     cout << “/**************************************************************************/” << endl;  
  58.     unsigned short int p1;  
  59.     short int p2;  
  60.       
  61.     //有符号字符扩充为无符号和有符号short int  
  62.     char ch1 = ‘F’;  
  63.     p1 = ~ch1;  
  64.     p2 = ~ch1;  
  65.     cout << p1 << endl;  
  66.     cout << p2 << endl;  
  67.   
  68.     //无符号字符扩充为无符号和有符号short int  
  69.     unsigned char ch2 = ‘F’;  
  70.     p1 = ~ch2;  
  71.     p2 = ~ch2;  
  72.     cout << p1 << endl;  
  73.     cout << p2 << endl;  
  74.   
  75.   
  76.     /******测试有符号数和无符号数的强制转换和扩位******/  
  77.     cout << “/**************************************************************************/” << endl;  
  78.     int nn = 0;  
  79.     unsigned int nn1 = 0;  
  80.   
  81.     //无符号数(正)扩充为有符号数和无符号数  
  82.     unsigned short int mm1 = 0x7000;  //28672  
  83.     nn = ~mm1;  
  84.     nn1 = ~mm1;  
  85.   
  86.     cout << nn << endl;   
  87.     cout << nn1 << endl;   
  88.   
  89.     short int aaa = 0x8000;  
  90.     long long bbb = ~aaa;  
  91.   
  92.     //无符号数(负)扩充为有符号数和无符号数  
  93.     unsigned short int mm3 = 0x8000;   //32768  
  94.     nn = mm3;  
  95.     nn1 = mm3;  
  96.   
  97.     cout << nn << endl;  
  98.     cout << nn1 << endl;  
  99.   
  100.     //有符号数(正)扩充为有符号数和无符号数  
  101.     short int mm2 = 0x7000;             //+28672  
  102.     nn = mm2;  
  103.     nn1 = mm2;  
  104.   
  105.     cout << nn << endl;  
  106.     cout << nn1  << endl;  
  107.   
  108.     //有符号数(负)扩充为有符号数和无符号数  
  109.     short int mm4 = 0x8000;             //-32768  
  110.     nn = mm4;  
  111.     nn1 = mm4;  
  112.   
  113.     cout << nn << endl;  
  114.     cout << nn1  << endl;  
  115.   
  116. }  

转载于:https://www.cnblogs.com/xrcun/archive/2012/12/01/2797061.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170478.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQLSERVER 存储过程 语法

    SQLSERVER 存储过程 语法SQLSERVER存儲過程的寫法格式規格CodehighlightingproducedbyActiproCodeHighlighter(freeware)http://www.CodeHighlighter.com/–>******************************************************** author:Susan*** date:

    2022年7月17日
    13
  • 前端低代码调研与总结

    近些年来,低代码的概念逐渐流行了起来,而低代码产品也越来越多的出现在我们的身边。低代码可以叫做可视化搭建,或者叫效能工具等等。像国外的Mendix,国内的宜搭、苍穹、简道云、amis等等。基于这种新型的开发方式,图形化的拖拉拽配置界面,并兼容了自定义的组件、代码扩展,确实在B端后台管理类网站建设中很大程度上的提升了效率。低代码平台能够高效且便捷,成本又低。就应用领域来讲已经很广泛了,例如营销领域,各种页面生产工具,非冰,乐高,宜搭,鲁班。还有电商类的公司都会给商家提供一个类似店铺装修的工具,小程序生产工具

    2022年4月13日
    43
  • 小米的创新发展模式_小米生态链模式简介

    小米的创新发展模式_小米生态链模式简介自从雷军召开小米手机发布会后,小米手机是否能做成,销量多少就成为业界一大话题。小米手机的关键词一度成为百度十大热门关键词。这一现象在产品界恐怕仅有苹果的iPhone才有此殊荣。 但业界绝大部分人士不看好,特别是手机界专业人士。最近小米手机又传出零配件供应问题,专业人士更是质疑声一片。做软件的到底不会做硬件,互联网销售在手机领域不行的论断不绝于耳。而形成反差的是,在市场上小米手机的预订却是火热异

    2022年9月15日
    0
  • python怎么对齐输出_关于python格式对齐的问题

    python怎么对齐输出_关于python格式对齐的问题利用cv2提取视频帧,可以逐帧提取,也可以跳跃读取。在读取过程中,需要对文件名进行规范,通过以下命令进行填充:.zfill(num)#num指的是填充会的位数importcv2importos#要提取视频的文件名,隐藏后缀sourceFileName=’Fog20200313000026’#在这里把后缀接上video_path=os.path.join(sourceFileName+’.mp4′)times=0#提取视频的频率,每375帧提取一个

    2022年10月7日
    1
  • 一阶惯性滤波特点_一阶惯性环节仿真

    一阶惯性滤波特点_一阶惯性环节仿真一阶惯性环节采用后置反馈的方式可以实现较精确的系统跟踪性能。上述系统的传递函数为因此启动性能良好,另,一阶惯性环节无超调量,因此可通过修改反馈参数实现最优的跟踪性能。因此在针对温度等变化较小的物理量方面的控制上是较占优势的,但精确跟踪也就意味着出现高频干扰、低频干扰、白噪声时,传感器也会精确地将这些干扰输出。这对一些容易受到干扰的系统是极为不利的。如下图为加入高频正弦信号后上述系统的输出(幅值为1,频率为1000(rad/sec))可见,系统虽然有一定的滤波性能(正弦输出

    2022年10月4日
    0
  • debian支持ll命令

    debian支持ll命令

    2022年1月26日
    92

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号