二进制移位溢出

2015-09-17 10:57:12

//////////////////////////////////////////////////////////////////////////
//在进行二进制移位操作时,被移位的数的字节大小,决定了移位后是否会溢出
//////////////////////////////////////////////////////////////////////////
#include <Windows.h>
#include <iostream>

int main()
{
    long long number(0), number2(0);
    int pos(32);

    number|= 1<<(pos);
    number2|= (long long)1<<(pos);

    std::cout<<"num = 0x"<<std::hex<<number<<std::endl;        //0x1
    std::cout<<"num2 = 0x"<<std::hex<<number2<<std::endl;    //0x100000000

    system("pause");
    return 0;
}
时间: 2024-09-30 15:56:17

二进制移位溢出的相关文章

Java中处理二进制移位

我相信,这篇文章读起来会相当有趣. 文章中编程语言是Java,用Java的原因:第一,Java不做数据溢出校验,这样我们可以忽略溢出异常:第二,Java普及率比较高,就像是python或shell,几乎人人都会呐. 确定一些位运算符:| 按位或 1001 | 1010 = 1011 (口诀,有真则真 似or逻辑)^ 按位异或 1001 ^ 1010 = 0011 (口诀,不等则真)& 按位与 1001 & 1010 = 1000 (口诀,同真则真 似and逻辑)~ 按位取反 ~1001 =

中断体系结构

一. 1 @***************************************** 2 HandleDataAbort: 3 b HandleDataAbort 4 @************* 5 @ 0x14: 保留 @ 6 @************* 7 HandleNotUsed: 8 b HandleNotUsed 9 @*************************** 10 @ 0x18: 中断模式的向量地址 @ 11 @*********************

java bitmap/bitvector的分析和应用

转自: http://shmilyaw-hotmail-com.iteye.com/blog/1741608  简介     bitmap在很多海量数据处理的情况下会用到.一些典型的情况包括数据过滤,数据位设置和统计等. 它的引入和应用通常是考虑到海量数据的情况下,用普通的数组会超出数据保存的范围.使用这种位图的方式虽然不能在根本上解决海量数据处理的问题,但是在一定的数据范围内,它是一种有效的方法.bitmap在java的类库里有一个对应的实现:BitSet.我们会对bitmap的引入做一个介绍

JAVA词汇大全

A B C D E F H I J L M O P R S T U V W A  Abstract Window Toolkit(AWT)抽象窗体工具集  一个用本地图形组件实现的图形接口.这些组件提供了大部分的本地组件.这个接口正逐步被Swing组件所替代,參见Swing Set.  Abstract 抽象的  一个Java语言中的keyword.用在类的声明中来指明一个类是不能被实例化的.可是能够被其他类继承.一个抽象类能够使用抽象方法,抽象方法不须要实现.可是须要在子类中被实现  abst

汇编指令总结

GAS中每个操作都是有一个字符的后缀,表明操作数的大小. C声明 GAS后缀 大小(字节) char b 1 short w 2 (unsigned) int / long / char* l 4 float s 4 double l 8 long double t 10/12 注意:GAL使用后缀"l"同时表示4字节整数和8字节双精度浮点数,这不会产生歧义因为浮点数使用的是完全不同的指令和寄存器. 操作数格式: 格式 操作数值 名称 样例(GAS = C语言) $Imm Imm 立即

16.10.18学到的Java知识

1. 突然间发现自己忘了关于自增自减运算符放在变量前后的区别是什么了? 于是乎,我查了资料. 如果只对自变量进行加1或减1的时候,放在前面和后面都是没有区别的. 但是,如果自增自减运算符使用在需要赋值给其他变量或与其他表达式进行计算时,那么就要注意了,因为这个时候自增自减运算符放在前面和后面就是有区别的了. 从图中可以很明显的看见,当进行赋值运算时,当运算符放在变量之后,是先取变量,然后在对变量进行加一或者减一的操作:当运算符放在变量之前的时候,是先对变量进行加一减一的操作,然后再取变量的值.

Google C++ 风格指南内容整理

之前一直没有全面的看过Google C++风格指南,现在很多公司进行C++开发都要求按照Google C++风格.在这个网站 http://zh-google-styleguide.readthedocs.org/en/latest/contents/  有人已经把其翻译成中文.为了便于以后查看,下面的内容完全是来自于这个网站,只是把多个网页的内容整理放在了一起. 1.      头文件: 通常每一个.cc文件都有一个对应的.h文件.也有一些常见例外,如单元测试代码和只包含main()函数的.c

在运行的时候传递参数

有人发帖问下面的程序为什么运行会出错? The method cypher(InputStream, OutputStream) in the type  MyEncoderText is not applicable for the arguments (FileInputStream,  FileOutputStream) package package1; import java.io.*; public class MyEncoderText {     public static vo

游戏编程技巧

看了<3D游戏编程大师技巧>的1.3节内容,感觉本科学的好多知识突然找到了价值.比如汇编.寻址等等. 这些东西也可以用到游戏编程中去~摘记部分要点如下 视频游戏是一种超高性能计算机程序.这意味着您将不能在时间关键代码部分和内存关键代码部分使用高级API. 下面是进行游戏编程时需要记住的一些技巧: 1.对您所做的工作进行备份 2.开始游戏项目时,需要进行良好的组织 3.使用内嵌函数 4.尽可能使用32位变量而不是8位或16位变量 5.不要害怕使用全局变量 6.以RISC方式进行编程 7.对于整数