首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Bitshifting long int返回错误数据

是指在进行位移操作时,长整型数据返回了不正确的结果。位移操作是一种常见的操作,用于将一个数的二进制表示向左或向右移动指定的位数。

位移操作符有两种:左移(<<)和右移(>>)。左移将二进制数向左移动指定的位数,右移将二进制数向右移动指定的位数。在进行位移操作时,可能会出现返回错误数据的情况。

造成位移操作返回错误数据的原因可能有以下几种:

  1. 数据溢出:当进行位移操作时,如果结果超出了长整型数据的表示范围,就会发生数据溢出。这会导致返回错误的数据。
  2. 符号位扩展:对于有符号的长整型数据,进行右移操作时,可能会发生符号位扩展。符号位扩展是指在右移时,最高位的符号位会被复制到左侧的空位上。这可能导致返回错误的数据。
  3. 位移位数错误:如果指定的位移位数超过了长整型数据的位数,就会返回错误的数据。例如,对于一个64位的长整型数据,如果指定的位移位数为70,就会返回错误的数据。

为了解决位移操作返回错误数据的问题,可以采取以下措施:

  1. 检查数据范围:在进行位移操作之前,先检查长整型数据的范围,确保结果不会超出表示范围。可以使用语言提供的数据类型范围检查函数或条件语句来实现。
  2. 使用无符号数据类型:如果不需要处理负数,可以考虑使用无符号的长整型数据类型。无符号数据类型在进行右移操作时不会发生符号位扩展,可以避免返回错误的数据。
  3. 检查位移位数:在进行位移操作之前,先检查指定的位移位数是否合法。可以使用条件语句或位运算符来进行检查。

总结起来,当进行位移操作时,需要注意数据范围、符号位扩展和位移位数等因素,以避免返回错误的数据。在实际开发中,可以根据具体情况选择合适的数据类型和进行必要的检查,以确保位移操作的正确性。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

mysql存储long数据_int数据类型

类型 在 MySQL 中支持的 5 个主要整数类型是 TINYINT,SMALLINT,MEDIUMINT,INT 和 BIGINT。...例如,指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。...UNSIGNED 和 ZEROFILL 修饰符也可以被 FLOAT、DOUBLE 和 DECIMAL 数据类型使用。并且效果与 INT 数据类型相同。...一个 ENUM 类型最多可以包含 65536 个元素,其中一个元素被 MySQL 保留,用来存储错误信息,这个错误值用索引 0 或者一个空字符串表示。...这说明通过搜索包含空字符串或对应数字索引为 0 的行就可以很容易地找到错误记录的位置。 SET 类型 SET 类型与 ENUM 类型相似但不相同。SET 类型可以从预定义的集合中取得任意数量的值。

3.8K30
  • 编码习惯之接口定义

    返回格式不统一 同一个接口,有时候返回数组,有时候返回单个;成功的时候返回对象,失败的时候返回错误信息字符串。工作中有个系统集成就是这样定义的接口,真是辣眼睛。...错误范例: //不返回任何数据,没有考虑失败场景,容易返工  @PostMapping("/update") public void update(long id, xxx) { } ---- 3....错误范例: // (当前用户删除数据)参数出现lang和userid,尤其是userid,大忌  @PostMapping("/delete") public Map delete...错误范例: // 参数出现json格式,可读性不好,代码也难看  @PostMapping("/update") public Map update(long id, String...没有返回应该返回数据 例如,新增接口一般情况下应该返回新对象的id标识,这需要编程经验。新手定义的时候因为前台没有用就不返回数据或者只返回true,这都是不恰当的。

    43930

    程序员你为什么这么累:编码习惯之接口定义

    返回格式不统一 同一个接口,有时候返回数组,有时候返回单个;成功的时候返回对象,失败的时候返回错误信息字符串。工作中有个系统集成就是这样定义的接口,真是辣眼睛。...错误范例: //不返回任何数据,没有考虑失败场景,容易返工  @PostMapping("/update") public void update(long id, xxx) { } 3....错误范例: // (当前用户删除数据)参数出现lang和userid,尤其是userid,大忌  @PostMapping("/delete") public Map...错误范例: // 参数出现json格式,可读性不好,代码也难看  @PostMapping("/update") public Map update(long id,...没有返回应该返回数据 例如,新增接口一般情况下应该返回新对象的id标识,这需要编程经验。新手定义的时候因为前台没有用就不返回数据或者只返回true,这都是不恰当的。

    749100

    我的编码习惯 —— API 接口定义

    返回格式不统一 同一个接口,有时候返回数组,有时候返回单个;成功的时候返回对象,失败的时候返回错误信息字符串。工作中有个系统集成就是这样定义的接口,真是辣眼睛。...错误范例: //不返回任何数据,没有考虑失败场景,容易返工  @PostMapping("/update") public void update(long id, xxx) { } 3....错误范例: // (当前用户删除数据)参数出现lang和userid,尤其是userid,大忌  @PostMapping("/delete") public Map<String, Object...错误范例: // 参数出现json格式,可读性不好,代码也难看  @PostMapping("/update") public Map update(long id...没有返回应该返回数据 例如,新增接口一般情况下应该返回新对象的id标识,这需要编程经验。新手定义的时候因为前台没有用就不返回数据或者只返回true,这都是不恰当的。

    78040

    我的编码习惯 - 接口定义

    返回格式不统一 同一个接口,有时候返回数组,有时候返回单个;成功的时候返回对象,失败的时候返回错误信息字符串。工作中有个系统集成就是这样定义的接口,真是辣眼睛。...错误范例: //不返回任何数据,没有考虑失败场景,容易返工  @PostMapping("/update") public void update(long id, xxx) { } 3....错误范例: // (当前用户删除数据)参数出现lang和userid,尤其是userid,大忌  @PostMapping("/delete") public Map<String, Object...错误范例: // 参数出现json格式,可读性不好,代码也难看  @PostMapping("/update") public Map update(long id...没有返回应该返回数据 例如,新增接口一般情况下应该返回新对象的id标识,这需要编程经验。新手定义的时候因为前台没有用就不返回数据或者只返回true,这都是不恰当的。

    52430

    linux网络编程之System V 消息队列(二):消息队列实现回射客户服务器和 msgsnd、msgrcv 函数

    返回值:成功返回0;失败返回-1 msgflg=IPC_NOWAIT表示队列满不等待,返回EAGAIN错误。...首先,它的具体数据必须小于系统规定的上限值MSGMAX;其次,它必须以一个long int长整数开始,接收者函数将利用这个长整数确定消息的类型。...msgid: 由msgget函数返回的消息队列标识码 msgp:是一个指针,指针指向准备接收的消息结构体 msgsz:是msgp指向的最大消息长度,这个长度不含保存消息类型的那个long int...msgflg=IPC_NOWAIT,队列没有可读消息不等待,返回ENOMSG错误。...,此时会返回EAGAIN 的错误,程序逻辑来说我们也会使其不断地尝试去写入,而不是粗暴地将其退出进程,这样还是会死锁。

    1.6K00

    JavaNote - 运算符与类型转换

    1、算术运算符 1)如果两个操作数有一个是Long,那么结果就为Long,如果没有Long时,结果为int,即便操作数全为short、byte,都是int; 2)如果两个操作数有一个为double,则结果为...2 Java类型转换 自动类型转换 指的是容量小数据类型可以自动转换为容量大的数据类型。(下图中的红色实现表示无数据丢失 的自动类型转换,蓝色虚线表示可能会有精度的损失) ?...语法格式:(type)var 运算符“()”中的type表示将值var转换成想要的目标数据类型 2.9 常见的类型转换错误 下面简单介绍一些常见的错误,具体看看注释: /** * 测试类型转换中常见的错误...= 1000000000; //10亿 int years = 30; //返回的total结果为-64771072,超出了int的范围,溢出了 int...,因为两个因子都是int,所以默认会按照int来计算,计算结果本身就溢出了,这时候再转成long也于事无补 long total1 = money*years; System.out.println

    48030

    c++常用库函数整理总结

    atof,atoi,atol 将字符串转换成 double(atof)、integer(atoi)或 long(ato1)型数据。...返回值:返回数字字符串的一个指针;没有错误返回   labs 求long 整数的绝对值。 函数原型:long labs(1ong n);  参数:n 长整数值。 ...返回值:返回 n 的绝对值;没有错误返回。   strtod 将字符串 nptr 转换成 double 型数据,在遇到第一个不能作为数值识别的字符时停止,这可能是结尾的空字符。...1abs 函数原型:long labs(1ong n)  功能和返回值:返回 long 型参数 n 的绝对值   ldexp 函数原型:double ldexp(double x,int exp); ...lrotl,lrotr 函数原型:unsigned long lrot (unsigned long value,int shift)  unsigned long lrotr (unsigned long

    1.1K20

    通过这14点,让你快速入门C语言(1)

    return 0;// C语言中的习惯:返回0表示正常返回返回非0表示异常返回 } 3....数据类型 char---->字符数据类型 short---->短整型 int---->整形 long---->长整型 long long---->更长的整形 float---->单精度浮点数 double...//sizeof-->......的大小 总结: 数据类型 大小(单位:字节) char 1 short 2 int 4 long 4/8 long long 8 float 4 double 8 附...(如:int a$b是错误的) 不能以数字开头。(如:int 3c是错误的) 长度不能超过63个字符。 变量名中区分大小写的。(如:int _3C和int _3c是不同的) 变量名不能使用关键字。...(如:int float是错误的) 4.3 变量的分类 局部变量 全局变量 int b = 20;//全局变量-->大括号外面的 void test() { int c;//局部变量 } int

    15610

    进程间通讯(六).semaphore and shared(3)

    |IPC_EXCL:如果内核中不存在键值与key相等的信号量集,则新建一个消息队列;如果存在这样的信号量集则报错 如果成功则返回信号量集的标识符,如果失败则返回-1,错误原因存于error中 有以下几种错误...最常见设置此值等于1,只完成对一个信号量的操作 如果成功则返回信号量集的标识,如果出错,则返回-1,错误原因存于error中 有以下几种错误 E2BIG:一次对信号量个数的操作超过了系统限制 EACCESS...0,出错则返回-1,错误原因存于error中 本函数调用并不删除所指定的共享内存区,而只是将先前用shmat函数连接(attach)好的共享内存脱离(detach)目前的进程 有以下几种错误 EINVAL...long int __unused3; unsigned long int __unused4; }; 这个结构体的指针可以在semctl中作为参数获取信号量的信息 ---- seminfo 结构体...0,如果出错则返回-1,错误原因存于error中 可能的错误有 EACCESS:参数cmd为IPC_STAT,确无权限读取该共享内存 EFAULT:参数buf指向无效的内存地址 EIDRM:标识符为

    62410
    领券