首页 > 其他分享 >运算符--原码、反码、补码

运算符--原码、反码、补码

时间:2023-12-22 19:56:30浏览次数:49  
标签:0000 -- 补码 运算符 反码 1010 public 原码

运算符--原码、反码、补码

原码:

十进制数据的二进制表现形式,最左边是符号位,0为正,1为负。

利用原码对正数进行计算是不会有问题的。

但如果是负数计算,结果就出错,实际运算的结果,跟我们预期的结果是相反的。

原码的弊端:

  • 利用原码进行计算的时候,如果是正数完全没有问题。
  • 但是如果是负数计算,结果就出错,实际运算的方向,跟正确的运算方向是相反的。

反码:

出现的目的:为解决原码不能计算负数的问题而出现的。

计算规则:正数的反码不变,负数的反码在原码的基础上,符号位不变,数值取反,0变1,1变0。

反码的弊端:负数运算的时候,如果结果不跨0,跟实际结果会有1的偏差。

补码:

出现的目的:为了解决负数计算时跨0的问题而出现的。

计算规则:

  • 正数的补码不变,负数的补码在反码的基础上+1.
  • 另外补码还能多记录一个特殊的值-128,该数据在1个字节下,没有原码和反码。

注意点:计算机中的存储和计算都是以补码的形式进行的。

基本数据类型

数据类型 字节 二进制
byte类型的10 1个字节 0000 1010
short类型的10 2个字节 0000 0000 0000 1010
int类型的10 4个字节 0000 0000 0000 0000 0000 0000 0000 1010
long类型的10 8个字节 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1010

隐式转换

public class Test {
    public static void main(String[] args) {
        byet a = 10;//0000 1010
        int b = a;//0000 0000 0000 0000 0000 0000 0000 1010
        System.out.println(b);
    }
}

强制转换

public class Test {
    public static void main(String[] args) {
        int a = 300;//0000 0000 0000 0000 0000 0001 0010 1100
        byet b = (byet) a;//0010 1100
        System.out.println(b);//44
    }
}
public class Test {
    public static void main(String[] args) {
        int a = 200;//0000 0000 0000 0000 0000 0000 1100 1000
        byet b = (byet) a;//1100 1000
        System.out.println(b);//-56
    }
}

其他运算符

运算符 含义 运算规则
& 逻辑与 0为false,1为true
| 逻辑或 0为false,1为true
<< 左移 向左移动,地位补0
>> 右移 向右移动,高位补0或1
>>> 无符号右移 向右移动,高位补0

标签:0000,--,补码,运算符,反码,1010,public,原码
From: https://www.cnblogs.com/Y423x/p/17922267.html

相关文章

  • AtCoder 杂题精选(2023 年末)
    [ABC324G]GenerateArrays第一次知道AtCoder还有这种数据结构题。首先,所谓的“切分序列”是假,实际上只需要记录每个操作后,具体取到的原始数组的值域、下标域是什么。对于给定的下标域,求值域内数的个数,可以使用可持久化线段树,很类似区间第\(k\)大数的思路。对于操作一,考虑......
  • K2 sherpa编译使用
    编译安装pip卸载cmake、torch、k2安装cmake3.22.3版本、k2、kaldi_feat【官方提供|install_dir】、torch==2.0.1【】缺cudaexportLD_LIBRARY_PATH=/usr/local/cuda11.7/lib64:$LD_LIBRARY_PATHexportPATH=/usr/local/cuda11.7/include:/usr/local/cuda11.7/bin:$PATH#......
  • 甘肃捐款名单列表 --- 来源于网络所以...
    小杨哥,捐出了1200万元人民币李佳琦捐款500万元。电商主播李佳琦向中华慈善总会捐赠500万元进行震区专项救援新茶饮公益基金携手古茗、书亦烧仙草、茶百道、蜜雪冰城、沪上阿姨、喜茶、益禾堂、茶颜悦色、7分甜、甜啦啦共计10家新茶饮品牌第一时间响应紧急救援工作,捐赠1000万元......
  • 容器(饭卡)
    #include<iostream>#include<vector>#include<windows.h>usingnamespacestd;inta=999;structstudent{stringname;intage;intcard;intcroom;}s;voidxitong(){cout<<"学生管理系统:"<<endl;co......
  • Kruskal重构树学习笔记
    挺简单的知识点(?)概念首先Kruskal算法是用来求最小生成树的算法之一,其思想是贪心。而Kruskal重构树就是将整张图重建为二叉树。在跑Kruskal的过程中我们会从小到大加入若干条边。现在我们仍然按照这个顺序。首先新建\(n\)个集合,每个集合恰有一个节点,点权为\(0\)。每......
  • 12月22每日打卡
    软件需求与分析课堂测试十一—综合案例建模分析(100分)销售订货管理系统是ERP的源头,如何管控销售订单下达、评审、跟进,不光是从软件上做约束管理,同时要从工作流程规定上做规范。【开发目的】规范公司订单下达、评审业务流程,提高客户订单准时交货率。【适用范围】适用于公司订......
  • 如何区分单模和多模光模块?
    如何区分单模和多模光模块?1.一般情况下多模光模块拉环颜色为黑色,单模光模块拉环颜色为蓝色。2.还可以根据光模块上打印的文字来区分。有MM,SX的为多模。SM的为单模。此外距离大于1Km的都是多模。   ......
  • Spring基于XML AOP事务控制
    Spring基于XMLAOP事务控制源码代码测试pom.xml<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:sche......
  • CF241B Friends
    异或粽子的加强版,时间复杂度是\(O(nlog^2w)\),其中\(w\)是值域\(2^{30}\),原来的是和\(k\)有关的,相当于是CF241B的代码通过不了异或粽子,异或粽子的代码通过不了CF241B(雾先考虑一个整体的思路,求前\(k\)大,先需要求第\(k\)大,第\(k\)大直接先二分,然后判断\(mid\)......
  • HTML学习首日体验
    当我第一次接触到HTML,我的第一感觉是它像是一种神秘的代码,能够构建出我们日常浏览的五彩斑斓的网页。之前,我只是一个纯粹的互联网使用者,浏览着各种网页,从未想过背后的技术是如何实现的。现在,我踏出了了解这项技术的第一步。HTML的全称是超文本标记语言,是一种用于创建网页的标准标记......